> 技术文档 > 图数据库安装(neo4j在linux详细安装)_neo4j安装linux

图数据库安装(neo4j在linux详细安装)_neo4j安装linux

目录

一.neo4j简介

二. 安装过程

1.下载安装包

2.把下载好的安装包上传到虚拟机里

3.解压到对应的目录里(这里用的是普通用户解压,需要赋权)

4.重命名

5.修改配置

6.启动和停止

7.客户端访问

三. Neo4j-CQL具体案例

(1) 创建人物和武器节点

创建人物节点

创建武器节点

(2) 创建关系

创建师徒关系

创建师兄弟关系

创建人物与武器的关系

(3) 查询操作

① 查询所有人的武器

② 查询孙悟空有什么武器

③ 查询取经团队中年龄最大的人物

(4) 更新操作

① 更新唐三藏的年龄为40岁

​编辑

② 为九齿钉钯添加新属性\'神铁\'

(5) 删除操作

① 删除孙悟空和猪八戒之间的师兄关系

② 删除所有武器节点及其与人物的关系


一.neo4j简介

Neo4j 是一款高性能的 图数据库(Graph Database),专门用于存储、管理和查询高度互联的数据。与传统的关系型数据库(如 MySQL、PostgreSQL)不同,Neo4j 使用 图结构(节点、关系、属性) 来表示数据,使其在处理复杂关系(如社交网络、推荐系统、知识图谱等)时具有显著优势。

Neo4j 的数据模型由三部分组成:

  • 节点(Node):表示实体(如用户、商品、文章)。

  • 关系(Relationship):表示节点之间的连接(如“朋友”“购买”“属于”)。

  • 属性(Property):存储节点或关系的附加信息(如姓名、价格、日期)。

二. 安装过程

1.下载安装包

安装包链接Index of /doc/neo4j/

Index of /doc/neo4j/

注意:neo4j与jdk版本的对应关系:neo4j的版本需要与jdk版本相适配。不然容易安装失败,或者后面会有一系列报错

2.把下载好的安装包上传到虚拟机里

3.解压到对应的目录里(这里用的是普通用户解压,需要赋权)

如果没有赋权可以执行

[root@zhangjiarong server]# chown -R zjr2315905010:zjr2315905010 /home/zjr2315905010/Downloads/

[root@zhangjiarong server]# chown -R zjr2315905010:zjr2315905010 /export/server/

[root@zhangjiarong server]# chmod u+x /export/server/

如果有权限直接跳过(或者可以直接在root用户下操作,就不用赋权这个操作了)

[zjr2315905010@zhangjiarong server]$ tar -xvf ~/Downloads/neo4j-community-3.5.31-unix.tar 


4.重命名

[zjr2315905010@zhangjiarong server]$ mv ./neo4j-community-3.5.31/ ./neo4j

5.修改配置

[zjr2315905010@zhangjiarong server]$ vim ./neo4j/conf/neo4j.conf 

相关配置

修改load csv时l路径,在前面加个#,可从任意路径读取文件
#dbms.directories.import=import
修改设置JVM初始堆内存和JVM最大堆内存
生产环境给的JVM最大堆内存越大越好,但是要小于机器的物理内存
dbms.memory.heap.initial_size=6g
dbms.memory.heap.max_size=9g
修改下面,可以认为这个是缓存,如果机器配置高,这个越大越好
dbms.memory.pagecache.size=10g
修改下面,去掉改行的#,可以远程通过ip访问neo4j数据库
dbms.connectors.default_listen_address=bigdate01
默认 bolt端口是7687,http端口是7474,https关口是7473,不修改下面3项也可以
修改下面,去掉#,设置http端口为7687,端口可以自定义,只要不和其他端口冲突就行
#dbms.connector.bolt.listen_address=:7687
修改下面,去掉#,设置http端口为7474,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.http.listen_address=:7474
修改下面,去掉#,设置http端口为7473,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.https.listen_address=:7473
修改下面,去掉#,允许从远程url来load csv
dbms.security.allow_csv_import_from_file_urls=true
修改下面,允许使用neo4j-shell,类似于mysql 命令行之类的
dbms.shell.enabled=true
修改下面,去掉#,设置连接neo4j-shell的端口,一般都是localhost或者127.0.0.1,这样安全,其他地址的话,一般使用https就行
dbms.shell.host=127.0.0.1
修改下面,去掉#,设置neo4j-shell端口,端口可以自定义,只要不和其他端口冲突就行
dbms.shell.port=1337
修改下面,设置neo4j可读可写
dbms.read_only=false

6.启动和停止

进入bin目录执行./neo4j start(启动)和./neo4j status(查看状态)

[zjr2315905010@zhangjiarong bin]$ ./neo4j start
[zjr2315905010@zhangjiarong bin]$ ./neo4j status

进入bin目录执行./neo4j stop(停止)

[zjr2315905010@zhangjiarong bin]$ ./neo4j stop

7.客户端访问

http://bigdata01:7474

(http://服务器IP地址:7474)

在浏览器访问图数据库所在的机器上的7474端口

(第一次访问账号neo4j,密码neo4j,会提示修改初始密码)

三. Neo4j-CQL具体案例

(1) 创建人物和武器节点

创建人物节点
CREATE (:X_Person {Name: \'唐三藏\', Age: 39})CREATE (:X_Person {Name: \'孙悟空\', Age: 520})CREATE (:X_Person {Name: \'猪八戒\', Age: 512})CREATE (:X_Person {Name: \'沙悟净\', Age: 400})

创建武器节点
CREATE (:X_Wuqi {Name: \'金箍棒\', Age: 10000})CREATE (:X_Wuqi {Name: \'九齿钉钯\', Age: 8000})CREATE (:X_Wuqi {Name: \'禅杖\', Age: 9000})

(2) 创建关系

创建师徒关系
MATCH (a:X_Person {Name: \'唐三藏\'}), (b:X_Person {Name: \'孙悟空\'})CREATE (a)-[:师傅]->(b)MATCH (a:X_Person {Name: \'唐三藏\'}), (b:X_Person {Name: \'猪八戒\'})CREATE (a)-[:师傅]->(b)MATCH (a:X_Person {Name: \'唐三藏\'}), (b:X_Person {Name: \'沙悟净\'})CREATE (a)-[:师傅]->(b)

创建师兄弟关系

MATCH (a:X_Person {Name: \'孙悟空\'}), (b:X_Person {Name: \'猪八戒\'}) CREATE (a)-[:师兄]->(b)

MATCH (a:X_Person {Name: \'孙悟空\'}), (b:X_Person {Name: \'沙悟净\'})CREATE (a)-[:师兄]->(b)MATCH (a:X_Person {Name: \'猪八戒\'}), (b:X_Person {Name: \'沙悟净\'})CREATE (a)-[:师兄]->(b)

创建人物与武器的关系
MATCH (a:X_Person {Name: \'孙悟空\'}), (b:X_Wuqi {Name: \'金箍棒\'})CREATE (a)-[:拥有]->(b)MATCH (a:X_Person {Name: \'猪八戒\'}), (b:X_Wuqi {Name: \'九齿钉钯\'})CREATE (a)-[:拥有]->(b)MATCH (a:X_Person {Name: \'沙悟净\'}), (b:X_Wuqi {Name: \'禅杖\'})CREATE (a)-[:拥有]->(b)

(3) 查询操作

① 查询所有人的武器
MATCH (p:X_Person)-[:拥有]->(w:X_Wuqi)RETURN p.Name AS 人物, w.Name AS 武器

② 查询孙悟空有什么武器
MATCH (p:X_Person {Name: \'孙悟空\'})-[:拥有]->(w:X_Wuqi)RETURN w.Name AS 武器

③ 查询取经团队中年龄最大的人物
MATCH (p:X_Person)RETURN p.Name AS 人物, p.Age AS 年龄ORDER BY p.Age DESCLIMIT 1

(4) 更新操作

① 更新唐三藏的年龄为40岁
MATCH (p:X_Person {Name: \'唐三藏\'})SET p.Age = 40RETURN p
② 为九齿钉钯添加新属性\'神铁\'
MATCH (w:X_Wuqi {Name: \'九齿钉钯\'})SET w.材料 = \'神铁\'RETURN w

(5) 删除操作

① 删除孙悟空和猪八戒之间的师兄关系
MATCH (a:X_Person {Name: \'孙悟空\'})-[r:师兄]->(b:X_Person {Name: \'猪八戒\'})DELETE r

② 删除所有武器节点及其与人物的关系
MATCH (w:X_Wuqi)DETACH DELETE w