Neo4j图形数据库和Cypher查询语言的学习与应用

一,下载与安装

Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK。

linux环境Neo4j下载地址:https://neo4j.com/download/other-releases/#releases (社区版免费)

二,解压与配置

解压

配置neo4j的配置文件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=0.0.0.0:7474

修改79行,去掉#,设置http端口为7473,端口可以自定义,只要不和其他端口冲突就行

dbms.connector.https.listen_address=0.0.0.0: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://tiger2.cn:7474/browser/ 即可访问

初始化用户名和密码均为neo4j

三,Cypher查询语言

1,neo4j查询语言Cypher介绍

Cypher是一种是一种声明式图查询语言,类似于关系型数据库的sql语言。

常用的语句:

MATCH:匹配图模式,从图中获取数据的常见方式
WHERE:不是独立的语句,而是MATCH,OPTION MATCH 和 WITH 的一部分,用于给模式添加约束或者过滤传递给WITH的中间结果
CREATE和DELETE:创建和删除节点关系
SET和REMOVE:使用SET设置属性值和给节点添加标签,使用REMOVE移除他们
MERGE:匹配已经存在的或者创建新节点和模式,对于有唯一性约束的时候非常有用
RETURN: 定义返回的结果。

二:neo4j查询语言Cypher的三要素

Cypher三要素包括节点语法,关系语法,还有语法模式。

1-Cypher采用一对圆括号来表示节点。如节点

img

的表示:

img节点语法

其中,标识符、标签、属性都可以省略。

标识符:就是起的变量名,用来保存节点,后面也可以使用他来引用。

标签:代表节点的类型,节点可以有多个标签,也可以没有。

属性:花括号{}代表节点的属性,属性类似Python的字典。

2-Cypher采用一对短横线(即–)表示一个无方向关系,有向关系在其中一段加上一个箭头(即->或<-);方括号[…]中可以添加详情。如:

img关系

标识符:就是起的变量名,用来保存关系,后面也可以使用他来引用。

标签:代表关系的类型,节点可以有多个标签,也可以没有。

属性:花括号{}代表关系的属性,属性类似Python的字典。

3-Cypher的语法模式

语法模式=节点+关系+节点

img

2,节点操作

2.1,创建节点
create (:Test{id:'123456',name:'小明',address:'北京市海淀区'})
create (:TestParent{id:'789012',name:'小明父亲',address:'北京市海淀区'})
2.2,创建关系

关系的构成:StartNode - [Variable:RelationshipType{Key1:Value1,Key2:Value2}] -> EndNode,在创建关系时,必须指定关系类型。

创建没有任何属性的关系

match (test:Test),(parent:TestParent) where test.id='123456' and parent.id='789012' create (parent)-[r:DIRECTED]->(test)

[r:DIRECTED]说明:r为别名,DIRECTED为自定义关系名称,其实也是一个对象,也可以指定属性,这里没有属性。

创建关系,并设置关系的属性

match (test:Test),(parent:TestParent) where test.id='123456' and parent.id='789012' create (parent)-[r:ACTED_IN{haha:['测试']}]->(t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值