1. 程式人生 > >elasticsearch:基礎練習

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

-d ' {  "first_name" : "pablo2",  "age" : 35,  "about" : "I love to go rock climbing",  "interests": [ "sports", "music" ],  "sex": "man" }'

#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個節點  

佈置主從節點的時候要有一定的考量,按實際需求來。