一,下载与安装
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采用一对圆括号来表示节点。如节点
的表示:
节点语法
其中,标识符、标签、属性都可以省略。
标识符:就是起的变量名,用来保存节点,后面也可以使用他来引用。
标签:代表节点的类型,节点可以有多个标签,也可以没有。
属性:花括号{}代表节点的属性,属性类似Python的字典。
2-Cypher采用一对短横线(即–)表示一个无方向关系,有向关系在其中一段加上一个箭头(即->或<-);方括号[…]中可以添加详情。如:
关系
标识符:就是起的变量名,用来保存关系,后面也可以使用他来引用。
标签:代表关系的类型,节点可以有多个标签,也可以没有。
属性:花括号{}代表关系的属性,属性类似Python的字典。
3-Cypher的语法模式
语法模式=节点+关系+节点
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