一、安裝
#拉取容器,不要拉最新版的,最新版的有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
docker run \ --publish=7474:7474 --publish=7687:7687 \ --volume=/Users/ffm1110/neo4j/data:/data \ --volume=/Users/ffm1110/neo4j/logs:/logs \ --volume=/Users/ffm1110/neo4j/conf:/var/lib/neo4j/conf\ --volume=/Users/ffm1110/neo4j/import:/var/lib/neo4j/import \ --env=NEO4J_dbms_memory_pagecache_size=2G \ --env=NEO4J_dbms_memory_heap_max__size=8G \ --name=neo4j \ -d neo4j:3.4
二、修改密碼
方法一
進入ip:7474,初始賬號密碼neo4j,登入后修改密碼
方法二 #container容器id docker exec --interactive --tty <container> bin/cypher-shell
三、訪問
#http://服務器的ip:7474
四、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