赞
踩
地址: https://neo4j.com/download/other-releases/#releases(社区版免费)
或者在线安装:
curl -O http://dist.neo4j.org/neo4j-community-3.4.5-unix.tar.gz
在docker内部部署:
docker run --publish=7474:7474 --publish=7687:7687 neo4j:4.2.1
请注意最低版本兼容性:
Neo4j Server 3.x-Java 8
Neo4j Server 4.x-Java 11
tar -axvf neo4j-community-3.4.5-unix.tar.gz
在安装目录下找到conf目录下的neo4j.conf文件
# 修改第22行load csv时l路径,在前面加个#,可从任意路径读取文件 #dbms.directories.import=import # 修改35行和36行,设置JVM初始堆内存和JVM最大堆内存 # 生产环境给的JVM最大堆内存越大越好,但是要小于机器的物理内存 dbms.memory.heap.initial_size=5g dbms.memory.heap.max_size=10g # 修改46行,可以认为这个是缓存,如果机器配置高,这个越大越好 dbms.memory.pagecache.size=10g # 修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库 dbms.connectors.default_listen_address=0.0.0.0 # 默认 bolt端口是7687,http端口是7474,https关口是7473,不修改下面3项也可以 # 修改71行,去掉#,设置http端口为7687,端口可以自定义,只要不和其他端口冲突就行 #dbms.connector.bolt.listen_address=:7687 # 修改75行,去掉#,设置http端口为7474,端口可以自定义,只要不和其他端口冲突就行 dbms.connector.http.listen_address=:7474 # 修改79行,去掉#,设置http端口为7473,端口可以自定义,只要不和其他端口冲突就行 dbms.connector.https.listen_address=:7473 # 修改227行,去掉#,允许从远程url来load csv dbms.security.allow_csv_import_from_file_urls=true # 修改246行,允许使用neo4j-shell,类似于mysql 命令行之类的 dbms.shell.enabled=true # 修改235行,去掉#,设置连接neo4j-shell的端口,一般都是localhost或者127.0.0.1,这样安全,其他地址的话,一般使用https就行 dbms.shell.host=127.0.0.1 # 修改250行,去掉#,设置neo4j-shell端口,端口可以自定义,只要不和其他端口冲突就行 dbms.shell.port=1337 # 修改254行,设置neo4j可读可写 dbms.read_only=false
进入bin目录执行./neo4j start
进入bin目录执行./neo4j stop
进入bin目录执行./neo4j status
http://服务器ip地址:7474/browser/
在浏览器访问图数据库所在的机器上的7474端口(第一次访问账号neo4j,密码neo4j,会提示修改初始密码)
若部署成功且neo4j已经处于运行状态,页面无法访问时,需放行端口
1、添加pom依赖
<neo4j-ogm.version>2.1.5</neo4j-ogm.version> <!-- neo4j相关所需jar包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-neo4j</artifactId> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j-ogm-core</artifactId> <version>${neo4j-ogm.version}</version> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j-ogm-bolt-driver</artifactId> <version>${neo4j-ogm.version}</version> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j-ogm-embedded-driver</artifactId> <version>${neo4j-ogm.version}</version> </dependency> <dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j</artifactId> <version>3.2.5</version> <scope>runtime</scope> </dependency>
2.实体bean
package com.demo.neo4j.entity; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.voodoodyne.jackson.jsog.JSOGGenerator; import lombok.Data; import org.neo4j.ogm.annotation.*; import java.util.HashSet; import java.util.Set; /** * @Author: yuf * @Date: 2021/3/30 10:39 * @Description: */ @JsonIdentityInfo(generator= JSOGGenerator.class) @NodeEntity(label = "User") @Data public class UserNode { @Id @GeneratedValue private Long nodeId; @Property(name = "name") private String name; @Property(name = "age") private int age; @Property(name = "sex") private String sex; **/*注意这个地方:并不是说加了这个注解,然后下面实现了addKnows这个方法在以后调用addKnows 就可以实现关系的增加,这是不对的,我看了很多教程没有说明。这个addKnows方法,只有在节点未被添加之前,调用该方法添加关系,然后再调用UserService中的create方法,这样关系才会同时被添加到图数据库中。如果想实现两个已有节点之间增加关系,需要单独实现*/** @Relationship(type = "know" ,direction = Relationship.OUTGOING) private Set<UserNode> knows = new HashSet<>(); public Boolean addKnows(UserNode to){ return this.knows.add(to); } @Override public String toString() { return "UserNode{" + "nodeId=" + nodeId + ", name='" + name + '\'' + ", age=" + age + ", sex='" + sex + '\'' + '}'; } public UserNode() {} }
3、Neo4jRepository提供常用操作,实体Mapper集成即可
@Node:在类级别应用,以指示该类是映射到数据库的候选对象。
@Id:在字段级别应用,以标记用于标识目的的字段。
@GeneratedValue:与字段一起应用,@Id以指定应如何生成唯一标识符。
@Property:在字段级别应用,以修改从属性到属性的映射。
@CompositeProperty:在字段级别应用于Map类型的属性,这些属性应作为组合读回。请参阅复合属性。
@Relationship:在字段级别应用,以指定关系的详细信息。
@DynamicLabels:在字段级别应用,以指定动态标签的来源。
@RelationshipProperties:在类级别应用,以表示该类为关系属性的目标。
@TargetNode:@RelationshipProperties从另一端的角度来看,应用于带有注释的类的字段上,以标记该关系的目标。
以下注释用于指定转换并确保与OGM的向后兼容性。
@DateLong
@DateString
@ConvertWith
1、添加5个人名节点,名字分别为
CREATE (:People{name:"John"})
CREATE (:People{name:"Joe"})
CREATE (:People{name:"Sara"})
CREATE (:People{name:"Steve"})
CREATE (:People{name:"Maria"})
2、创建节点、添加关系进行查询操作结果:
match (people:People) return people
3、给这5个人添加上朋友关系
MATCH (a:People{name:"John"}) MATCH (b:People{name:"Joe"}) CREATE (a) -[:friend]->(b)
MATCH (a:People{name:"John"}) MATCH (b:People{name:"Sara"}) CREATE (a) -[:friend]->(b)
MATCH (a:People{name:"Joe"}) MATCH (b:People{name:"Steve"}) CREATE (a) -[:friend]->(b)
MATCH (a:People{name:"Sara"}) MATCH (b:People{name:"Maria"}) CREATE (a) -[:friend]->(b)
4、再次查询
match (people:People) return people
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。