天天看點

Neo4j基本使用及導入三元組

下載下傳和安裝Neo4j

  1. 安裝Java JDK
  2. 下載下傳Neo4j安裝檔案
  3. 建立系統環境變量

Neo4j配置

配置文檔存儲在conf目錄下,Neo4j通過配置檔案neo4j.conf控制伺服器的工作。預設情況下,不需要進行任意配置,就可以啟動伺服器。

核心資料檔案的位置

例如,核心資料檔案存儲的位置,預設是在data/graph.db目錄中,要改變預設的存儲目錄,可以更新配置選項:

# The name of the database to mount
#dbms.active_database=graph.db
        

Paths of directories in the installation.

dbms.directories.data=data

安全驗證,預設是啟用的

# Whether requests to Neo4j are authenticated.
# To disable authentication, uncomment this line
#dbms.security.auth_enabled=false
           

配置JAVA 堆記憶體的大小

# Java Heap Size: by default the Java heap size is dynamically calculated based on available system resources.
# Uncomment these lines to set specific initial and maximum heap size.
#dbms.memory.heap.initial_size=512m
#dbms.memory.heap.max_size=512m
           

網絡連接配接配置

Neo4j支援三種網絡協定(Protocol)

Neo4j支援三種網絡協定(Protocol),分别是Bolt,HTTP和HTTPS,預設的連接配接器配置有三種,為了使用這三個端口,需要在Windows防火牆中建立Inbound Rules,允許通過端口7687,7474和7473通路本機。

Neo4j基本使用及導入三元組

連接配接器的可選屬性

listen_address:設定Neo4j監聽的連結,由兩部分組成:IP位址和端口号(Port)組成,格式是:<ip-address>:<port-number>

設定預設的監聽位址

設定預設的網絡監聽的IP位址,該預設位址用于設定三個網絡協定(Bolt,HTTP和HTTPs)的監聽位址,即設定網絡協定的屬性:listen_address位址。在預設情況下,Neo4j隻允許本地主機(localhost)通路,要想通過網絡遠端通路Neo4j資料庫,需要修改監聽位址為 0.0.0.0,這樣設定之後,就能允許遠端主機的通路。

# With default configuration Neo4j only accepts local connections.
# To accept non-local connections, uncomment this line:
dbms.connectors.default_listen_address=0.0.0.0
           

分别設定各個網絡協定的監聽位址和端口

HTTP連結器預設的端口号是7474,Bolt連結器預設的端口号是7687,必須在Windows 防火牆中允許遠端主機通路這些端口号。

# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
#dbms.connector.bolt.listen_address=0.0.0.0:7687
        

HTTP Connector. There must be exactly one HTTP connector.

dbms.connector.http.enabled=true

dbms.connector.http.listen_address=0.0.0.0:7474

HTTPS Connector. There can be zero or one HTTPS connectors.

dbms.connector.https.enabled=true

dbms.connector.https.listen_address=0.0.0.0:7473

啟動Neo4j程式

通過控制台啟動Neo4j程式

點選組合鍵:Windows+R,輸入cmd,啟動DOS指令行視窗,切換到主目錄,以管理者身份運作指令:

./neo4j.bat console

把Neo4j安裝為服務(Windows Services)

安裝和解除安裝服務:

bin\neo4j install-service
bin\neo4j uninstall-service
           

啟動服務,停止服務,重新開機服務和查詢服務的狀态:

./neo4j.bat start
./neo4j.bat stop
./neo4j.bat restart
./neo4j.bat status
           

打開Neo4j內建的浏覽器

Neo4j伺服器具有一個內建的浏覽器,在一個運作的伺服器執行個體上通路 “http://localhost:7474/”,打開浏覽器,顯示啟動頁面

Neo4j基本使用及導入三元組

預設的host是bolt://localhost:7687,預設的使用者是neo4j,其預設的密碼是:neo4j,第一次成功登陸到Neo4j伺服器之後,需要重置密碼。

通路Graph Database需要輸入身份驗證,Host是Bolt協定辨別的主機。

導入三元組

生成節點與關系csv檔案

Neo4j基本使用及導入三元組

語句插入往往非常緩慢,當需要插入大量三元組時考慮使用Neo4j-import的方式。

這種方式有許多注意點:

  1. 傳入檔案名的時候務必使用絕對路徑。
  2. 在執行指令之前務必保證Neo4j處于關閉狀态,如果不确定可以在Neo4j根目錄下運作./bin/neo4j status 檢視目前狀态。
  3. 使用neo4j-admin import指令導入之前先将原資料庫從neo4j_home/data/databases/graph.db/中移除。
  4. 寫CSV檔案的時候務必確定所有的節點的CSV檔案的ID fileds的值都唯一、不重複。并且確定所有的邊的CSV檔案的START_ID 和 END_ID都包含在節點CSV檔案中。

本人原三元組檔案:

Neo4j基本使用及導入三元組

兩邊為實體/屬性,中間為關系

python程式

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

import pandas as pd

import csv


# 讀取三元組檔案

h_r_t_name = [":START_ID", "role", ":END_ID"]

h_r_t = pd.read_table("entity_sig.txt", decimal="\t", names=h_r_t_name)

print(h_r_t.info())

print(h_r_t.head())

              # 去除重複實體

entity = set()

entity_h = h_r_t[':START_ID'].tolist()

entity_t = h_r_t[':END_ID'].tolist()

for i in entity_h:

entity.add(i)

for i in entity_t:

entity.add(i)

print(entity)

# 儲存節點檔案

csvf_entity = open("entity.csv", "w", newline='', encoding='utf-8')

w_entity = csv.writer(csvf_entity)

# 實體ID,要求唯一,名稱,LABEL标簽,可自己不同設定對應的标簽

w_entity.writerow(("entity:ID", "name", ":LABEL"))

entity = list(entity)

entity_dict = {}

for i in range(len(entity)):

w_entity.writerow(("e" + str(i), entity[i], "my_entity"))

entity_dict[entity[i]] = "e"+str(i)

csvf_entity.close()

# 生成關系檔案,起始實體ID,終點實體ID,要求與實體檔案中ID對應,:TYPE即為關系

h_r_t[':START_ID'] = h_r_t[':START_ID'].map(entity_dict)

h_r_t[':END_ID'] = h_r_t[':END_ID'].map(entity_dict)

h_r_t[":TYPE"] = h_r_t['role']

h_r_t.pop('role')

h_r_t.to_csv("roles.csv", index=False)

           

實體檔案:

Neo4j基本使用及導入三元組

關系檔案:

導入檔案

.\neo4j-admin.bat import --nodes D:\\python_workplaces\\get_kg\\entity.csv --relationships D:\\python_workplaces\\get_kg\\roles.csv

啟動浏覽器即可檢視

Neo4j基本使用及導入三元組

參考文獻

https://www.cnblogs.com/ljhdo/p/5521577.html

https://blog.csdn.net/sinat_26917383/article/details/82424508

https://blog.csdn.net/weixin_40322587/article/details/80846106

原文位址:https://www.jianshu.com/p/d4e524a7ba30