图数据库Neo4j的基本使用及与SpringBoot集成

官网地址:https://neo4j.com/

下载地址:

官方入门文档:https://neo4j.com/docs/getting-started

安装 Window安装

window下安装下载对应的安装包,然后配置环境变量即可。

增加系统环境变量NEO4J_HOME;

修改path环境变量增加%NEO4J_HOME%\bin

cmd 窗口执行 :neo4j console 便可以启动数据库。

C:\Users\lich0>neo4j console 2021-02-24 07:24:33.778+0000 INFO ======== Neo4j 3.5.26 ======== 2021-02-24 07:24:33.795+0000 INFO Starting... 2021-02-24 07:24:37.133+0000 INFO Bolt enabled on 127.0.0.1:7687. 2021-02-24 07:24:38.110+0000 INFO Started. 2021-02-24 07:24:38.840+0000 INFO Remote interface available at :7474/ Linux安装

下载安装包,解压后,简单修改配置文件就可以使用。云服务器的话需要放开对应的端口。

配置文件修改:

# 可以读写 dbms.read_only=false # 可以远程访问 dbms.connectors.default_listen_address=0.0.0.0

启动服务

[root@VM-0-2-centos bin]# ./neo4j start Active database: graph.db Directories in use: home: /opt/neo4j-community-3.5.26 config: /opt/neo4j-community-3.5.26/conf logs: /opt/neo4j-community-3.5.26/logs plugins: /opt/neo4j-community-3.5.26/plugins import: /opt/neo4j-community-3.5.26/import data: /opt/neo4j-community-3.5.26/data certificates: /opt/neo4j-community-3.5.26/certificates run: /opt/neo4j-community-3.5.26/run Starting Neo4j. Started neo4j (pid 20669). It is available at :7474/ There may be a short delay until the server is ready. See /opt/neo4j-community-3.5.26/logs/neo4j.log for current status.

查看状态

[root@VM-0-2-centos bin]# ./neo4j status Neo4j is running at pid 20669

关闭服务

[root@VM-0-2-centos bin]# ./neo4j stop Stopping Neo4j.. stopped

访问服务即可::7474/browser/

Docker部署

拉取镜像,启动就行了呀

拉取镜像

[root@VM-0-2-centos ~]# docker pull neo4j:3.5.26 [root@VM-0-2-centos ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/neo4j 3.5.26 27b84ff7b769 6 weeks ago 333 MB

启动容器,建议写个启动的脚本:neo4j_start.sh

这里需要注意脚本权限,映射的目录的访问权限

sudo docker run -it --name neo4j -e NEO4J_AUTH=neo4j/123456 -p 7474:7474 -p 7687:7687 \ -v /data/neo4j/data:/data \ -v /data/neo4j/neo4j/logs:/logs \ -v /data/neo4j/conf:/conf \ -v /data/neo4j/metrics:/metrics \ -v /data/neo4j/plugins:/plugins \ -v /data/neo4j/import:/import \ -d neo4j:3.5.26

查看启动的容器

[root@VM-0-2-centos neo4j]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b92f8beb7d82 neo4j:3.5.26 "/sbin/tini -g -- ..." 3 minutes ago Up 3 minutes 0.0.0.0:7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp neo4j

访问服务即可::7474/browser/

基本概念

Node 节点

图的基本单位主要是节点和关系,节点和关系都可以包含多个k-v结构的属性。

Relationships 关系

关系的主要功能就是连接节点,一个关系连接两个节点,一个开始和一个结束节点,这种关系是有进出方向的。

Properties 属性

属性就可以理解为关系型数据库中表中的所有字段了,节点和关系都可以有多个属性,并且属性的key为字符串,值可以是其他类型例如数值,布尔

Lables 标签

标签和ES的别名是一样的作用,可以用来划分一类的节点,查询的时候可以通过标签来分类查询。

Travelsal 遍历

查询的时候往往都是遍历图谱,遍历的过程中会有一个开始节点,然后根据Cypher语句,遍历相关的节点和关系得到最终的结果

Paths 路径

路径是一个或者多个节点通过关系连接起来,例如通过Cypher查询得到的结果

Schema 模式

neo4j是类似ES一样的无模式图谱数据库,使用它无需要定义schema

Indexes 索引

和关系型数据库中的索引一样为了加快检索的速度,这里构建索引是一个异步的过程,只有创建成功后才会生效。如果创建失败可以删除后从新创建。

Constraints 约束

约束可以定义在某个字段上,限制字段值唯一,创建约束会自动创建索引

Cypher

语句cypher是neo4j官网提供的声明式查询语言,非常强大,用它可以完成任意的图谱里面的查询过滤。就好像关系型数据库中的SQL语句一样

创建节点

创建电影相关的节点

-- 创建一个节点:黑客帝国; 标签:电影;属性:标题-The Matrix,发布年份-1997 CREATE (matrix:Movie { title:"The Matrix",released:1997 }) -- 下面的同理 CREATE (cloudAtlas:Movie { title:"Cloud Atlas",released:2012 }) CREATE (forrestGump:Movie { title:"Forrest Gump",released:1994 })

创建演员相关的节点

CREATE (keanu:Person { name:"Keanu Reeves", born:1964 }) CREATE (robert:Person { name:"Robert Zemeckis", born:1951 }) CREATE (tom:Person { name:"Tom Hanks", born:1956 }) CREATE (jerry:Person { name:"Jerry", born:1986 })

创建关系

-- Tom Hanks在电影Forrest Gump中出演Forrest角色 CREATE (tom)-[:ACTED_IN { roles: ["Forrest"]}]->(forrestGump) -- Tom Hanks在电影Forrest Gump中出演Forrest角色 CREATE (tom)-[:ACTED_IN { roles: ['Zachry']}]->(cloudAtlas) -- jerry 在电影 The Matrix 出演 Jerry角色 CREATE (jerry)-[:ACTED_IN { roles: ["J"]}]->(matrix) -- Robert Zemeckis指导电影Forrest Gump CREATE (robert)-[:DIRECTED]->(forrestGump)

注意:上面创建节点,关系的语句需要同时执行后,节点才会有关联关系,如下所示:

如果你的创建节点和创建关系的语句是分开执行的话,会是如下的结果:因为创建的关系的时候没有指定节点是属性会被认为是新的节点

图数据库Neo4j的基本使用及与SpringBoot集成

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzjzsp.html