
一、Neo4j 的安装与配置由于Neo4j是基于JavaSE JDK 开发的图形数据库所以本文以JDK11 和 Neo4j 4.x 为例其他版本的方式步骤一致需要注意的是JDK 和 Neo4j 的版本对应。1、安装JDKNeo4j是基于Java的图形数据库运行Neo4j需要启动JVM进程因此必须安装JAVA SE的JDK。配置 JDK环境为以后能适应Springboot请选择最低JDK1.8的环境。【如果想安装多个JDK版本的可以点击这里进行查看】1.1 下载JDK11首先打开网页搜索甲骨文JDK结果如下图1所示点击红圈地址。点击进入之后寻找JDK11的版本选择windows系统下载压缩包如图2所示。若系统提醒输入甲骨文账号自己到CSDN搜索甲骨文账号有很多的共享账号。下载完之后进行解压安装选择合适的路径解压我是在D盘里新建的文件夹如图3所示1.2 JDK11 环境变量配置下载完之后就要为JDK添加环境变量点击此电脑点击查看旁边的更多即三个点然后点击属性进入下一界面。具体操作如图4所示进入界面后点击此界面的高级系统设置然后点击出现界面中的环境变量如图5所示接下来可以在用户变量或者系统变量中进行操作在用户变量里点击新建变量名输入JAVA_HOME变量值为解压的地址建完点击确定。如图6所示然后点击用户变量里的Path新建写入%JAVA_HOME%\bin,点击确定。看图7如下完成环境变量的配置之后验证是否安装成功winR打开cmd在cmd运行命令行输入java -version出现JDK版本号即为配置成功如图8所示2、下载Neo4j注意: 由于Neo4j是基于JAVA的JDK开发的 所以下载时必须使用当前JDK版本的Neo4j安装包最低 JDK1.8 对应 Neo4j 3.x 的JDK 11 对于 Neo4j 4.x JDK17 对应 Neo4j 5.x, 依此类推 …官网下载地址https://neo4j.com/download-center国内镜像地址(所有版本都有)https://we-yun.com/doc/neo4j/2.1、最新版本下载(社区版)2.2、国内网址下载2.3、最新桌面版本下载虽然这个操作会简单很多但开发人员建议下载上面的服务版的适合开发和拓展 , 桌面版比较适合非开发人员使用。3、Neo4j 安装 与 环境配置3.1 Neo4j 服务版1、下载好之后直接解压到合适的路径就可以了无需安装。2、我的电脑–属性—高级系统设置–环境变量–新建3、在path路径中将变量添加进去3.2 Neo4j 桌面版官网桌面版安装指南https://neo4j.com/download-thanks-desktop/?editiondesktopflavourwinstall64release1.5.7offlinetrue第 1 步激活1、在您的计算机上找到您刚刚下载的文件然后双击以开始安装。2、将激活复制并粘贴到本页顶部的Neo4j桌面的“激活密钥”框中 或者您也可以通过填写右侧的表单从应用程序内生成密钥。由于版权问题详情请跳转官方地址查看步骤 2创建数据库激活后单击“新图形”按钮。从选项中选择“创建局部图形” 提出。接下来在字段中输入“数据库名称”和“密码”然后单击“创建”按钮。步骤 3启动数据库创建数据库后单击“开始”按钮。打开 Neo4j 浏览器第 1 步启动 Neo4j 浏览器数据库启动后单击“管理”按钮。在下一个屏幕上找到屏幕顶部的“打开浏览器”并单击它。这将打开 Neo4j 浏览器 在新窗口中。步骤 2浏览示例数据集Neo4j Desktop附带两个示例数据集。您可以使用以下命令运行它们:play movie graph和:play northwind graph4、Neo4j 验证 、 启动 与 服务注册下面示例以服务版为主桌面版可以跳过4.1、Neo4j 服务的配置验证 与启动1、winr 打开cmd 键入 neo4j.bat console出现下面的界面 表示安装成功如果JDK版本和安装的Neo4J 版本不一致就会出现下面的报错。2、用浏览器打开网址http://localhost:7474/初始账户信息用户名和密码都是neo4j注意第一次使用需要修改密码下面截图是修改后的4.2、Neo4j 服务的注册1、winr 打开cmd 键入 neo4j install-serviceneo4j install-service二、Neo4j 的使用 与命令1.1、导入并创建节点数据load csv from file:///product_ratings_data.csv as line create (:product_ratings { UserID:line[0],Product:line[1],Ratings:line[2]})1.2、创建一个人物节点CREATE (n:Person {name:John}) RETURN nCREATE是创建操作Person是标签代表节点的类型。花括号{}代表节点的属性属性类似Python的字典。这条语句的含义就是创建一个标签为Person的节点该节点具有一个name属性属性值是John。2、继续来创建更多的人物节点并分别命名CREATE (n:Person {name:Sally}) RETURN n; CREATE (n:Person {name:Steve}) RETURN n; CREATE (n:Person {name:Mike}) RETURN n; CREATE (n:Person {name:Liz}) RETURN n; CREATE (n:Person {name:Shawn}) RETURN n;3、创建地区节点CREATE (n:Location {city:Miami, state:FL}); CREATE (n:Location {city:Boston, state:MA}); CREATE (n:Location {city:Lynn, state:MA}); CREATE (n:Location {city:Portland, state:ME}); CREATE (n:Location {city:San Francisco, state:CA});如图所示共有6个人物节点、5个地区节点Neo4J贴心地使用不用的颜色来表示不同类型的节点。4、接下来创建关系MATCH (a:Person {name:Liz}), (b:Person {name:Mike}) MERGE (a)-[:FRIENDS]-(b)这里的方括号[]即为关系FRIENDS为关系的类型。注意这里的箭头 --是有方向的表示是从a到b的关系。 如图Liz和Mike之间建立了FRIENDS关系通过Neo4J的可视化很明显的可以看出5、关系也可以增加属性MATCH (a:Person {name:Shawn}), (b:Person {name:Sally}) MERGE (a)-[:FRIENDS {since:2001}]-(b)在关系中同样的使用花括号{}来增加关系的属性也是类似Python的字典这里给FRIENDS关系增加了since属性属性值为2001表示他们建立朋友关系的时间。6、接下来增加更多的关系MATCH (a:Person {name:Shawn}), (b:Person {name:John}) MERGE (a)-[:FRIENDS {since:2012}]-(b); MATCH (a:Person {name:Mike}), (b:Person {name:Shawn}) MERGE (a)-[:FRIENDS {since:2006}]-(b); MATCH (a:Person {name:Sally}), (b:Person {name:Steve}) MERGE (a)-[:FRIENDS {since:2006}]-(b); MATCH (a:Person {name:Liz}), (b:Person {name:John}) MERGE (a)-[:MARRIED {since:1998}]-(b);7、然后建立不同类型节点之间的关系-人物和地点的关系MATCH (a:Person {name:John}), (b:Location {city:Boston}) MERGE (a)-[:BORN_IN {year:1978}]-(b)这里的关系是BORN_IN表示出生地同样有一个属性表示出生年份。如图在人物节点和地区节点之间人物出生地关系已建立好。8、同样建立更多人的出生地MATCH (a:Person {name:Liz}), (b:Location {city:Boston}) MERGE (a)-[:BORN_IN {year:1981}]-(b); MATCH (a:Person {name:Mike}), (b:Location {city:San Francisco}) MERGE (a)-[:BORN_IN {year:1960}]-(b); MATCH (a:Person {name:Shawn}), (b:Location {city:Miami}) MERGE (a)-[:BORN_IN {year:1960}]-(b); MATCH (a:Person {name:Steve}), (b:Location {city:Lynn}) MERGE (a)-[:BORN_IN {year:1970}]-(b);9、至此知识图谱的数据已经插入完毕可以开始做查询了。我们查询下所有在Boston出生的人物MATCH (a:Person)-[:BORN_IN]-(b:Location {city:Boston}) RETURN a,b10、查询所有对外有关系的节点MATCH (a)--() RETURN a注意这里箭头的方向返回结果不含任何地区节点因为地区并没有指向其他节点只是被指向11、查询所有有关系的节点MATCH (a)--() RETURN a12、查询所有对外有关系的节点以及关系类型MATCH (a)-[r]-() RETURN a.name, type(r)13、查询所有有结婚关系的节点MATCH (n)-[:MARRIED]-() RETURN n14、创建节点的时候就建好关系CREATE (a:Person {name:Todd})-[r:FRIENDS]-(b:Person {name:Carlos})15、查找某人的朋友的朋友MATCH (a:Person {name:Mike})-[r1:FRIENDS]-()-[r2:FRIENDS]-(friend_of_a_friend) RETURN friend_of_a_friend.name AS fofName返回Mike的朋友的朋友16、增加/修改节点的属性MATCH (a:Person {name:Liz}) SET a.age34; MATCH (a:Person {name:Shawn}) SET a.age32; MATCH (a:Person {name:John}) SET a.age44; MATCH (a:Person {name:Mike}) SET a.age25;这里SET表示修改操作17、删除节点的属性MATCH (a:Person {name:Mike}) SET a.testtest MATCH (a:Person {name:Mike}) REMOVE a.test删除属性操作主要通过 REMOVE18、删除节点MATCH (a:Location {city:Portland}) DELETE a除节点操作是 DELETE19、删除有关系的节点MATCH (a:Person {name:Todd})-[rel]-(b:Person) DELETE a,b,rel20、删除数据库中的图MATCH (n) DETACH DELETE n这里MATCH 是匹配操作而小括号() 代表一个节点node可理解为括号类似一个圆形括号里面的n为标识符。