一、安装

#拉取容器,不要拉最新版的,最新版的有bug
docker pull neo4j:3.4

#拉取可能会很慢或中断,可以使用阿里云加速地址
vim /etc/docker/daemon.json

#your_id你自己的阿里云ID号
--registry-mirror=https://{your_id}.mirror.aliyuncs.com
#启动容器
docker run -it -d -p 7474:7474 -p 7687:7687 neo4j:3.4

二、修改密码


方法一
进入ip:7474,初始账号密码neo4j,登入后修改密码
方法二
#container容器id
docker exec --interactive --tty <container> bin/cypher-shell

docker安装neo4j及py2neo的使用-冯金伟博客园

三、访问

#http://服务器的ip:7474

docker安装neo4j及py2neo的使用-冯金伟博客园

四、py2neo

import pandas as pd
from py2neo import Graph, Node, Relationship, NodeMatcher


#连接neo4j数据库,输入地址、用户名、密码
graph = Graph('http://*.*.*.*:7474', username='neo4j', password='neo4j')

df=pd.read_excel(r"company.xlsx")

#创建公司名节点
for i in range(df.shape[0]): company=df.iloc[i, :][0] node = Node("COMPANY", company=company, ) graph.create(node)
#创建公司信息节点
for i in range(df.shape[0]): columns = df.columns.to_list() for j in columns[1:]: _node = df.iloc[i, :][j] node = Node("INFO", _node=_node,column=j) graph.create(node)
#建立公司信息关系
for i in range(df.shape[0]): company = df.iloc[i, :][0] matcher = NodeMatcher(graph) company_node = matcher.match("COMPANY", company=company).first() columns=df.columns.to_list() for j in columns[1:]: _node=df.iloc[i, :][j] _node=matcher.match("INFO", _node=_node,column=j).first() # print(_node,j,company_node) relationship = Relationship(_node, j, company_node) graph.create(relationship)

数据从天眼查爬取的

数据文件:https://pan.baidu.com/s/1g_UYUVpG9KV9T1eA6PReZQ    密码:e662

五、cypher常用查询

查询所有数据
match (n) return n

查询所有数据,并限制查询数据量
match (n) return n limit 10

查询某个标签的所有节点
match (c:COMPANY) return c limit 10

查询某个标签的所有节点的指定属性
match (i:INFO) return i.column limit 100

查询某个标签的所有节点的指定属性
match (i:INFO) return i.column='公司类型' limit 100

match (i:INFO { column:'公司类型' } ) return i

查询注册资金都是60万相关的公司名
match (i:INFO{_node:'60万人民币'})--(COMPANY) return i,COMPANY

查询整个图中所存在的关系
match (i:INFO)-[r]-(company:COMPANY) return type(r)

查询整个图中所存在的关系并去除结果中的重复元素
match (i:INFO)-[r]-(company:COMPANY) return distinct type(r)

查询2家公司相同的信息
match (c1:COMPANY{company:"上海贯德国际贸易有限公司"}),(c2:COMPANY{company:"甘肃谷森新能源科技有限公司"}),r=((c1)-[*..3]-(c2)) return r