neo4j简易配置方案 - peter-xbs/CommonCodes GitHub Wiki
https://www.zmonster.me/2019/04/30/neo4j-introduction.html
CREATE INDEX ON :<LabelName>(<propertyKey>)
- 拉取镜像
docker pull centos
docker run -it centos /bin/bash
- 安装neo4j
# 1、使用yum下载安装neo4j,参照以下官方的安装说明
# Neo4j Stable Yum Repo
# First, you'll want our key:
cd /tmp
wget http://debian.neo4j.org/neotechnology.gpg.key
rpm --import neotechnology.gpg.key
# Then, you'll want to add our yum repo to /etc/yum.repos.d/neo4j.repo:
cat <<EOF> /etc/yum.repos.d/neo4j.repo
[neo4j]
name=Neo4j Yum Repo
baseurl=http://yum.neo4j.org/stable
enabled=1
gpgcheck=1
EOF
# Finally, install a package
yum install neo4j
- neo4j配置
# 1)若使除安装neo4j的本机外的浏览器可以通过web端访问neo4j的可视化界面,需要执行以下操作
vim /etc/neo4j/neo4j.conf
# 把下面这段内容的注释取消(把“#”删掉即可)
dbms.connectors.default_listen_address=0.0.0.0
# 2)开放防火墙7474端口
firewall-cmd --permanent --add-port=7474/tcp
firewall-cmd --reload
# 若firewall不存在,可执行
yum install firewalld firewall-config
# 3.启动neo4j
sudo neo4j start
# 或
sudo neo4j console
# 打开浏览器输入地址http://(服务器ip地址或域名):7474/,即可查看web端的控制台,登录访问即可,默认用户名neo4j,密码neo4j。
# 有可能有打不开的现象,本次是在docker 虚拟机中运行,两个端口均需要映射,即docker run -p 7687:7687 -p 7474:7474 即可解决,进入后重置密码
# neo4j.conf中的修改
dbms.connectors.default_listen_address=0.0.0.0
dbms.connector.bolt.enabled=true
dbms.connector.bolt.address=0.0.0.0:7687
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=:7473
- py2neo写入图数据库
上一步中将密码重置为ssss,在本节使用:
# -*- coding: utf-8 -*-
from py2neo import Graph, Node, Relationship, NodeMatcher
from py2neo.matching import RelationshipMatcher
# 连接数据库
graph = Graph("http://127.0.0.1:7474", username="neo4j", password='ssss')
# 创建节点
p1 = Node("Person", name="张三")
p2 = Node("Person", name="李四")
graph.create(p1)
graph.create(p2)
# 创建关系
r = Relationship(p1, "认识", p2)
graph.create(r)
# 节点查询
mather = NodeMatcher(graph)
result = mather.match("Person", name="张三").first()
print(result)
# (_0:Person {name: '\u5f20\u4e09'})
# 查询关系
relation_matcher = RelationshipMatcher(graph)
ret = relation_matcher.match((result,), r_type="认识").first()
print(ret)
# (张三)-[:认识 {}]->(李四)
# 直接运行cypher语句
ret = graph.run('match(p:Person{name:"李四"}) return p').data()
print(ret)
- 经典Cypher语句记录
- 节点一般圆括号表示,关系中括号表示,属性用花括号表示。
- 经典关系查询语句
match (p:Person{name:"张三"})-[:`认识`]->(p2) return p2;
- 经典节点查询语句
match(p:Person) where p.name="张三" return p;
- 创建Nodes
create (:Person {name:"王五", age:"65"})
- 删除Nodes(匹配到name为王五,但年龄信息缺失的节点并删除)
match (p:Person) where p.name="王五" and p.age is null delete p;
- 创建关系
match (a:Person), (b:Person) where a.name="王五" and b.name="李四" create (a)-[r:`认识`]->(b) return r
- 删除关系
match ()-[r:`认识`]->() delete r