Neo4j入門詳細教程


Neo4j安裝配置

(1)下載安裝包

(2)安裝jdk

(3)環境變量配置

分三步,具體參考  https://www.bilibili.com/video/BV1Nz411q7bG?from=search&seid=11789489567953530494

 

Neo4j常用命令

neo4j install-service  # 安裝服務
neo4j uninstall-service  # 卸載服務

neo4j console  # 控制台啟動

  neo4j start  # 啟動
  neo4j stop  # 停止
  neo4j restart  # 重啟

啟動成功后訪問 http://localhost:7474/browser/ 或者 http://127.0.0.1:7474/browser/

賬號密碼默認 neo4j

 

Neo4j相關概念

節點:

  節點是圖數據庫中的一個基本元素,表示一個具體的實體,可以類比成關系數據庫中的記錄

關系:

  關系是圖數據庫中節點之間的連接,也表示成節點之間的邊,neo4j中關系是雙向的

屬性:

  屬性是對節點以及關系的一種說明,可以類比成關系數據庫中的字段或者列,這里需要強調的是,在圖數據庫中關系也是可以設計屬性的。

標簽:

  標簽(label)是同一類節點的組合,但是並不是在同一標簽下的節點一定包含相同屬性。

路徑:

  路徑是圖數據庫建立之后,任意兩個節點之間的連通管理,是關系的組合。

 

cypher語言快速入門

cypher是一種非常簡潔的圖查詢語言,可以在shell與瀏覽器端直接執行。其基本語法包含以下四個部分:

start:設定查找的起始節點

match:匹配圖形模式, 可以定位感興趣數據的子圖形

where:對查詢數據進行過濾

limit:限制查詢數量

return:返回結果

注意:在新版本的neo4j中start可以省略

 

CREATE 創建一個節點

使用 Cypher 生成一個小的社交圖.

CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })

 

  • CREATE 創建數據的子句
  • () 圓括號表示一個節點
  • ee:Person 變量 'ee' 和 標簽 'Person' 表示新的 節點
  • 花括號添加屬性到節點

 

MATCH 查找節點

查找表示 Emil 的節點:

MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;

 

  • MATCH 指定節點和關系的模式的子句
  • (ee:Person) 帶有標簽 "Person" 的單節點模式, 將匹配項賦給變量 "ee"
  • WHERE 約束結果的子句
  • ee.name = "Emil" 比較 name 屬性與 "Emil" 值
  • RETURN 用於請求特定結果的子句

  ee是變量,通過where查詢相匹配的節點,並返回該變量ee

 

創建更多 節點和關系

CREATE子句可以一次創建多個節點及關系.

MATCH (ee:Person) WHERE ee.name = "Emil"
CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),
(ir:Person { name: "Ian", from: "England", title: "author" }),
(rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),
(ally:Person { name: "Allison", from: "California", hobby: "surfing" }),
(ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
(js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
(ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
(rvb)-[:KNOWS]->(ally)

 

節點和關系

Cypher 采用一對圓括號 () 來表示節點,如 (n:角色) 表示一個 角色 節點,n 是變量名,供命令執行時用 n 來訪問這個節點,在命令執行完畢后就無法使用了。同時單獨的 () 表示一個匿名節點,在匹配時表示匹配所有節點。

在關系中

  • --表示無方向的關系

  • --> 表示有方向的關系

  • -[r]-> 則給關系賦予一個變量名,方便對這個關系進行操作

  • -[r:配偶]-> 匹配關系為 配偶 的類型

 

模式匹配 描述在圖中查找的內容

例如, 一個用來查找 Emil 的朋友的模式:

MATCH (ee:Person)-[:KNOWS]-(friends)
WHERE ee.name = "Emil" RETURN ee, friends

 

  • MATCH用於描述從已知節點到找到的節點的模式的子句
  • (ee)模式以 Person 開始 (由 WHERE 限定)
  • -[:KNOWS]-匹配 "KNOWS 關系 (任意方向)
  • (friends)將綁定為 Emil 的朋友

 

推薦 使用模式

模式匹配可以用來做推薦. Johan 正在學 沖浪, 因此他想找到一個沖浪的新朋友:

MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
WHERE js.name = "Johan" AND surfer.hobby = "surfing"
RETURN DISTINCT surfer

 

  • ()空的圓括號表示忽略這些節點
  • DISTINCT因為不止一條路徑將與模式匹配
  • surfer將包含 Allison, 一個朋友的朋友, 且沖浪

 

分析 使用可視化查詢計划

要了解查詢的工作原理, 可在查詢之前加 EXPLAIN 或 PROFILE:

PROFILE MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
WHERE js.name = "Johan" AND surfer.hobby = "surfing"
RETURN DISTINCT surfer

 

Cypher入門常用到的語句,推薦!

 

更多 Cypher 語法內容請查看 https://neo4j.com/docs/cypher-refcard/3.5/

 

 

 以下為其他內容

Neo4j清空數據

一、用下列 Cypher 語句:

match (n) detach delete n

二、
1、停掉服務;
2、刪除 graph.db 目錄;
3、重啟服務。

 

少量數據推薦第一種方案,數據量大容易內存溢出,因為是先查出來再刪除,所以數據量大推薦第二種方案

 

關系結構圖

 

 

 

有方向關系圖

 

 

 

 

 

無方向關系圖

 

附一張建好節點關系的圖片(*^_^*)

 


免責聲明!

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



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