elasticsearch:基礎練習
首先搭建好elasticsearch叢集,我這裡搭建3臺,偽分散式。
新建一個名為es1的索引庫:
curl -XPUT http://192.168.1.28:9200/es1/
則出現以下:
lunce 5個主片:
其他幾個是從片,主從絕對不會在一個節點上,比如1和1 2和2 主從都不在一個節點。
建“表”:
#document: curl -XPOST http://192.168.1.28:9200/es1/employee -d ' { "first_name" : "bin", "age" : 33, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] }'
建立失敗:
建立成功:
document id自動生成。
檢視:
再建立一條:
#add field yes
再新增:
增加一個屬性
curl -XPOST http://192.168.1.28:9200/es1/employee -d ' { "first_name" : "pablo2", "age" : 33, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ], "sex": "man" }'
支援列的動態增長:
curl -XPOST http://192.168.1.28:9200/es1/employee/1
#put:
curl -XPUT http://192.168.1.28:9200/es1/employee/1 -d ' { "first_name" : "god bin", "last_name" : "pang", "age" : 42, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] }'
如果沒有指定id(上面指定為1)的話:
指定為1的話我們把年齡42給改為45:
curl -XPUT http://192.168.1.28:9200/es1/employee -d ' { "first_name" : "god bin", "last_name" : "bin", "age" : 45, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] }'
說明post和put都可以做建立和修改。put是必須要我們自定義指定id的,post則自動生成,如果post給定了id則對這個id做相應的修改。
#根據document的id來獲取資料:(without pretty)
curl -XGET http://192.168.1.28:9200/es1/employee/1?pretty
這是根據id來查詢的,並不是經過倒排索引來查詢的。
#根據field來查詢資料:
curl -XGET http://192.168.1.28:9200/es1/employee/_search?q=first_name="bin"
god 都返回來了 ,說明做了倒排索引了。
#根據field來查詢資料:match
curl -XGET http://192.168.1.28:9200/es1/employee/_search?pretty -d ' { "query": {"match": {"first_name":"bin"} } }'
#對多個field發起查詢:multi_match
curl -XGET http://192.168.1.28:9200/es1/employee/_search?pretty -d ' { "query": {"multi_match": { "query":"bin", "fields":["last_name","first_name"], "operator":"and" } } }'
目前測試資料為:
#多個term對多個field發起查詢:bool(boolean) # 組合查詢,must,must_not,should # must + must : 交集 # must +must_not :差集 # should+should : 並集
curl -XGET http://192.168.1.28:9200/es1/employee/_search?pretty -d ' { "query": {"bool" : { "must" : {"match": {"first_name":"bin"} //first_name這個filed必須含有bin }, "must" : {"match": {"age":33} //age這個filed必須等於33歲 } } } }'
curl -XGET http://192.168.1.28:9200/es1/employee/_search?pretty -d ' { "query": {"bool" : { "must" : {"match": {"first_name":"bin"}//必須含有bin }, "must_not" : {"match": {"age":33}//必須不等於33歲 } } } }'
curl -XGET http://192.168.1.28:9200/es1/employee/_search?pretty -d ' { "query": {"bool" : { "must_not" : {"match": {"first_name":"bin"} }, "must_not" : {"match": {"age":33} } } } }'
##查詢first_name=bin的,或者年齡在20歲到33歲之間的
curl -XGET http://192.168.1.28:9200/es1/employee/_search -d ' { "query": {"bool" : { "must" : {"term" : { "first_name" : "bin" } } , "must_not" : {"range": {"age" : { "from" : 20, "to" : 33 } } } } } }'
#修改配置 curl -XPUT 'http://192.168.1.28:9200/test2/' -d'{"settings":{"number_of_replicas":2}}' //一個主對應兩個從
curl -XPUT 'http://192.168.1.28:9200/test3' -d'{"settings":{"number_of_shards":3,"number_of_replicas":3}}' // 不能有3個從 因為總共就3個節點
curl -XPUT 'http://192.168.1.28:9200/test4/' -d'{"settings":{"number_of_shards":6,"number_of_replicas":4}}' //不能有4個節點
佈置主從節點的時候要有一定的考量,按實際需求來。