第一部分 安装
----------------------------------------------------
步骤一:安装neo4j
[root@iii tmp]# cd /tmp
[root@iii tmp]# wget http://debian.neo4j.org/neotechnology.gpg.key
[root@iii tmp]# rpm --import neotechnology.gpg.key
[root@iii tmp]# cat <<EOF > /etc/yum.repos.d/neo4j.repo
> [neo4j]
> name=Neo4j Yum Repo
> baseurl=http://yum.neo4j.org/stable
> enabled=1
> gpgcheck=1
> EOF
[root@iii tmp]# yum install neo4j -y
步骤二:启动Neo4j
[root@iii tmp]# neo4j --help
Usage: neo4j { console | start | stop |restart | status | version }
[root@iii tmp]# neo4j console
Active database: graph.db
Directories in use:
home: /var/lib/neo4j
config: /etc/neo4j
logs: /var/log/neo4j
plugins: /var/lib/neo4j/plugins
import: /var/lib/neo4j/import
data: /var/lib/neo4j/data
certificates: /var/lib/neo4j/certificates
run: /var/run/neo4j
Starting Neo4j.
……
步骤三:设置远程访问
[root@iii tmp]# cat /etc/neo4j/neo4j.conf
找到对应的项目org.neo4j.server.webserver.address=0.0.0.0,然后移除前面的注释
安装好以后,在控制台启动Neo4j,然后打开浏览器访问 http://192.168.1.1:7474/ ,就可以查看Neo4j服务了。
登录图数据库的时候使用默认的用户名和密码(neo4j)连接,连接成功后需要修改neo4j的默认密码。
第二部分 cypher操作
----------------------------------------------------
neo4j 常用cypher操作
1.基本概念
Label:标签,对应关系DB里的表;
节点Node:相当于表里的每行数据,包含多个属性(列);
关系Ralition : 边,也可以有属性,大小写区分。其他均不区分大小写
2.neo4j字段类型
NEO4J java
------------------------
NULL null
Boolean java.lang.Boolean
Integer java.lang.Long
Float java.lang.Double
String java.lang.String
List java.util.List<T>
Map java.util.Map<K,V>
Node org.neo4j.driver.v1.types.Node(*)
Relationship org.neo4j.driver.v1.types.Relationship(*)
Path org.neo4j.driver.v1.types.Path(*)
3.cypher语法
1)创建节点与关系 CREATE
CREATE (erzi:Person {id:'erzi'}),(baba:Person {id:'baba'}),(erzi)-[:fathor]->(baba)
//erzi baba是别名 Person是标签名(表名) {id:'erzi'}是节点属性 (erzi:Person {id:'erzi'})是节点 [:fathor]是关系
2)查询 MATCH
MATCH (n:Person) RETURN n limit 25
等价于:Select * from Person limit 25 Person表名
Match (n:Person {id:'erzi'}),(f:Person {id:'baba'})
等价于:
Match (n:Person ),(f:Person)
where n.id='erzi' and f.id='baba'
Merge (n)-[:fathor]->(f)
return n,f
3)MERGE 不存在就创建 存在就返回 (没有更新功能!只会创建新的节点)
MERGE (n:Person { name: 'Ann' }) RETURN n
4)更新 SET
MATCH (N:PERSON {ID:'BABA'}) SET N.NAME='张三',N.AGE=50 RETURN N
5)DELETE 和 REMOVE
DELETE操作用于删除节点和relation。
REMOVE操作用于删除标签label和属性。
MATCH (n:Person {id:'baba'}) remove n.age return n //删除属性
MATCH (s:Teacher)-[r:teach]->(d:Student) delete r,s,d //删除节点和relation
6)排序 ORDER BY
MATCH (n:Person) RETURN n order by n.id,n.name desc LIMIT 25
7)分页 SKIP LIMIT
MATCH (n:Person) RETURN n order by n.id desc SKIP 2 LIMIT 25
skip 从多少行开始查 limit查询件数
8)UNION 和 UNION ALL
MATCH (n:Person) where n.age>20 RETURN n.id,n.age
UNION ALL
MATCH (n:Person) where n.id='erzi' RETURN n.id,n.age
9)IN
MATCH (n:Person) where n.age>20 RETURN n.id,n.age
UNION ALL
MATCH (n:Person) where n.id in ['erzi','baba'] RETURN n.id,n.age
10)可以通过函数id(node/relation)获取id值 这个id相当于oracle的rowid
11)创建删除索引
create index on :Person(id);
drop index on :Person(id);
12)执行计划查看 explain match
13)设置唯一约束
CREATE CONSTRAINT ON (a:Person) ASSERT a.id IS UNIQUE
DROP CONSTRAINT ON (a:Person) ASSERT a.id IS UNIQUE
14)常用函数
功能 描述
UPPER 它用于将所有字母更改为大写字母。
LOWER 它用于将所有字母改为小写字母。
SUBSTRING 它用于获取给定String的子字符串。
REPLACE 它用于替换一个字符串的子字符串。
Match (n:Person) return SUBSTRING(n.id,2,0),n.id
聚集函数 描述
COUNT 它返回由MATCH命令返回的行数。
MAX 它从MATCH命令返回的一组行返回最大值。
MIN 它返回由MATCH命令返回的一组行的最小值。
SUM 它返回由MATCH命令返回的所有行的求和值。
AVG 它返回由MATCH命令返回的所有行的平均值。
15)查询最短路径shortestPath allShortestPaths
match p=shortestPath((n:Person {id:'mama'})-[*..3]-(b:Person {id:'nainai'})) return
16)导入CSV数据
LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/products.csv" AS row //远程
CREATE (n:Product)
SET n = row,
n.unitPrice = toFloat(row.unitPrice),
n.unitsInStock = toInteger(row.unitsInStock), n.unitsOnOrder = toInteger(row.unitsOnOrder),
n.reorderLevel = toInteger(row.reorderLevel), n.discontinued = (row.discontinued <> "0")
LOAD CSV WITH HEADERS FROM "file:///products22.csv" AS row //本地
CREATE (n:Product)
SET n = row
第三部分 数据迁移操作
----------------------------------------------------
1.直接将data文件夹copy到要导入的库中就可以了
2.密码重置 删除data文件夹下的auth文件就恢复到默认密码 neo4j 了
3.不同版本间数据迁移 设置配置文件 dbms.allow_format_migration=true
第四部分 开发
----------------------------------------------------
rest接口地址 http://XXX.XXX.XX.XX:7474/db/data/
文档地址 https://neo4j.com/docs/rest-docs/3.3/