docker安裝neo4j及py2neo的使用


一、安裝

#拉取容器,不要拉最新版的,最新版的有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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM