查看当前系统版本:lsb_release -a
下载neo4j安装包,速度巨慢:wget -c https://neo4j.com/artifact.php?name=neo4j-community-3.4.14-unix.tar.gz
解压缩至/usr/local目录:tar -zxvf artifact.php\?name\=neo4j-community-3.4.14-unix.tar.gz -C /usr/local
重命名:cd /usr/local -》 mv neo4j-community-3.4.14*/ neo4j
配置环境变量:vim /etc/profile
#neo4j
export NEO4J_HOME=/usr/local/neo4j
export PATH=$PATH:$NEO4J_HOME/bin
使立即生效:source /etc/profile
修改conf/neo4j.conf 配置文件54行如下: cd /usr/local/neo4j/conf/ vi neo4j.conf
将改行注释放出来就可以了
启动neo4j服务:neo4j start
浏览器登录:192.168.0.105:7474 (此处ip换成实际部署的服务器的ip),初始密码为:neo4j,登录后设置新密码,最后进入如下界面,可以点击页面上的“Start Learning”进行初步的学习 Neo4j。
至此,Neo4j 已经在 Ubuntu 上安装好了。
----
neo4j图数据库的使用:Cypher是图形数据库Neo4j的查询语言,就像SQL在关系数据库中查询一样。
一、Node语法:
在cypher里面通过用一对小括号()表示一个节点,它在cypher里面查询形式如下 :
1、()代表匹配任意一个节点
2、(node1)代表匹配任意一个节点,并给它起了一个别名
3、(:Lable)代表查询一个类型的数据
4、(person:Lable)代表查询一个类型的数据,并给它起了一个别名
5、(person:Lable{name:"小王"})查询某个类型下,节点属性满足某个值的数据
6、(person:Lable{name:"小王",age:23})节点的属性可以同时存在多个,是一个AND的关系
二、关系语法:
关系用一对-组成,关系分为有方向的进和出,如果是无方向就是进和出都查询
1、-->指向一个节点
2、-[role]->给关系加个别名
3、-[:acted_in]->访问某一类关系
4、-[role:acted_in]->访问某一类关系,并加了别名
5、-[role:acted_in{role:["neo","hadoop"]}]->访问某一类关系下的某个属性的关系的数据
三、模式语法
模式语法是节点和关系查询语法的结合,通过模式语法我们可以进行我们想要的任意负责的查询
四、模式变量
为了增加模块化和减少重复,cypher允许把模式的结果指定在一个变量或者别名中,方便后续使用或操作
path=(:Person)-[:ACTED_IN]->(:Movie)
path是结果集的抽象封装,有多个函数可以直接从path里面提取数据如:
nodes(path):提取所有的节点
rels(path):提取所有的关系和relationships(path)相等
length(path):获取路径长度
五、条件
match:查询的主要关键词
create:类似sql里面的insert
filter , project , sort , page 等
----
一些实际的用法例子:
1、创建
create(:Movie {title:"驴得水",released:2016}) return p;
2、查询:
match(p:Person) return p; 查询Person类型的所有数据
match(p:Person{name:"sun"}) return p;查询名字等于sun的人
match(p1:Person{name:"sun"})-[rel:friend]->(p2) return p2.name,p2.age 查询sun的朋友的名字和年龄
match(old)..create(new) create(old)-[rel:dr]->(new) return new 对已经存在的节点和新建的节点建立关系
3、查询或更新
merge语法可以对已经存在的节点不做改变,对改变的部分会合并
MERGE (m:Movie{title:"Cloud Atlas"})
ON CREATE SET m.released = 2012
RTRUEN m
merge....on create set ... return 语法支持合并更新
4、筛选过滤
cypher过滤也是用的和SQL一样的关键词where
match(p1:Person) where p1.name = "sun" return p1;
等同于下面的
match(p1:Person{name:"sun"}) return p1
where条件里面支持and , or , xor ,not 等boolean运算符,在json串里面都是and,同事where里面还支持正则查询
5、结果集返回
MATCH (p:Person)
RETURN p,p.name as name,upper(p.name),coalesce(p.nickname,"n/a") AS nickname,
{name:p.name,label:head (labels(p))} AS person
结果集返回做去重 match(n) return distince n.name;
待续:https://blog.csdn.net/u010454030/article/details/53131229
--使用