查看當前系統版本:lsb_release -a
下載neo4j安裝包,速度巨慢:wget -c https://neo4j.com/artifact.php?name=neo4j-community-3.4.14-unix.tar.gz
解壓縮至/usr/local目錄:tar -zxvf artifact.php\?name\=neo4j-community-3.4.14-unix.tar.gz -C /usr/local
重命名:cd /usr/local -》 mv neo4j-community-3.4.14*/ neo4j
配置環境變量:vim /etc/profile
#neo4j
export NEO4J_HOME=/usr/local/neo4j
export PATH=$PATH:$NEO4J_HOME/bin
使立即生效:source /etc/profile
修改conf/neo4j.conf 配置文件54行如下: cd /usr/local/neo4j/conf/ vi neo4j.conf
將改行注釋放出來就可以了
啓動neo4j服務:neo4j start
瀏覽器登錄:192.168.0.105:7474 (此處ip換成實際部署的服務器的ip),初始密碼爲:neo4j,登錄後設置新密碼,最後進入如下界面,可以點擊頁面上的“Start Learning”進行初步的學習 Neo4j。
至此,Neo4j 已經在 Ubuntu 上安裝好了。
----
neo4j圖數據庫的使用:Cypher是圖形數據庫Neo4j的查詢語言,就像SQL在關係數據庫中查詢一樣。
一、Node語法:
在cypher裏面通過用一對小括號()表示一個節點,它在cypher裏面查詢形式如下 :
1、()代表匹配任意一個節點
2、(node1)代表匹配任意一個節點,並給它起了一個別名
3、(:Lable)代表查詢一個類型的數據
4、(person:Lable)代表查詢一個類型的數據,並給它起了一個別名
5、(person:Lable{name:"小王"})查詢某個類型下,節點屬性滿足某個值的數據
6、(person:Lable{name:"小王",age:23})節點的屬性可以同時存在多個,是一個AND的關係
二、關係語法:
關係用一對-組成,關係分爲有方向的進和出,如果是無方向就是進和出都查詢
1、-->指向一個節點
2、-[role]->給關係加個別名
3、-[:acted_in]->訪問某一類關係
4、-[role:acted_in]->訪問某一類關係,並加了別名
5、-[role:acted_in{role:["neo","hadoop"]}]->訪問某一類關係下的某個屬性的關係的數據
三、模式語法
模式語法是節點和關係查詢語法的結合,通過模式語法我們可以進行我們想要的任意負責的查詢
四、模式變量
爲了增加模塊化和減少重複,cypher允許把模式的結果指定在一個變量或者別名中,方便後續使用或操作
path=(:Person)-[:ACTED_IN]->(:Movie)
path是結果集的抽象封裝,有多個函數可以直接從path裏面提取數據如:
nodes(path):提取所有的節點
rels(path):提取所有的關係和relationships(path)相等
length(path):獲取路徑長度
五、條件
match:查詢的主要關鍵詞
create:類似sql裏面的insert
filter , project , sort , page 等
----
一些實際的用法例子:
1、創建
create(:Movie {title:"驢得水",released:2016}) return p;
2、查詢:
match(p:Person) return p; 查詢Person類型的所有數據
match(p:Person{name:"sun"}) return p;查詢名字等於sun的人
match(p1:Person{name:"sun"})-[rel:friend]->(p2) return p2.name,p2.age 查詢sun的朋友的名字和年齡
match(old)..create(new) create(old)-[rel:dr]->(new) return new 對已經存在的節點和新建的節點建立關係
3、查詢或更新
merge語法可以對已經存在的節點不做改變,對改變的部分會合並
MERGE (m:Movie{title:"Cloud Atlas"})
ON CREATE SET m.released = 2012
RTRUEN m
merge....on create set ... return 語法支持合併更新
4、篩選過濾
cypher過濾也是用的和SQL一樣的關鍵詞where
match(p1:Person) where p1.name = "sun" return p1;
等同於下面的
match(p1:Person{name:"sun"}) return p1
where條件裏面支持and , or , xor ,not 等boolean運算符,在json串裏面都是and,同事where裏面還支持正則查詢
5、結果集返回
MATCH (p:Person)
RETURN p,p.name as name,upper(p.name),coalesce(p.nickname,"n/a") AS nickname,
{name:p.name,label:head (labels(p))} AS person
結果集返回做去重 match(n) return distince n.name;
待續:https://blog.csdn.net/u010454030/article/details/53131229
--使用