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、重啟服務。
少量數據推薦第一種方案,數據量大容易內存溢出,因為是先查出來再刪除,所以數據量大推薦第二種方案
關系結構圖
有方向關系圖
無方向關系圖
附一張建好節點關系的圖片(*^_^*)