eslasticsearch操做集錦

索引-index:一個索引就是一個擁有幾分類似特徵的文檔的集合。好比說,你能夠有一個客戶數據的索引,另外一個產品目錄的索引,還有一個訂單數據的索引。一個索引由一個名字來標識(必須所有是小寫字母的),而且當咱們要對對應於這個索引中的文檔進行索引、搜索、更新和刪除的時候,都要使用到這個名字javascript

類型-type:一個類型是你的索引的一個邏輯上的分類/分區,其語義徹底由你來定。一般,會爲具備一組共同字段的文檔定義一個類型。好比說,咱們假設你運營一個博客平臺而且將你全部的數據存儲到一個索引中。在這個索引中,你能夠爲用戶數據定義一個類型,爲博客數據定義另外一個類型html

文檔-document:一個文檔是一個可被索引的基礎信息單元。好比,你能夠擁有某一個客戶的文檔,某一個產品的一個文檔,固然,也能夠擁有某個訂單的一個文檔。文檔以JSON(Javascript Object Notation)格式來表示。許多條 Document 構成了一個 Index,能夠是json格式java

Node 與 Cluster:

Elastic 本質上是一個分佈式數據庫,容許多臺服務器協同工做,每臺服務器能夠運行多個 Elastic 實例。node

單個 Elastic 實例稱爲一個節點(node)。一組節點構成一個集羣(cluster)。數據庫

  健康檢查: curl 'localhost:9200/_cat/health?v'
status:綠色表明一切正常(集羣功能齊全),黃色意味着全部的數據都是可用的,可是某些複製沒有被分配(集羣功能齊全),紅色則表明由於某些緣由,某些數據不可用
 
節點查詢:curl 'localhost:9200/_cat/nodes?v'
 
索引列表: curl 'localhost:9200/_cat/indices?v'
 
   1.新建和刪除 Index
curl -X PUT 'localhost:9200/xxx'
curl -X DELETE 'localhost:9200/weather'

2新增記錄
curl -X PUT 'localhost:9200/hupu/xxx/1' -d ' { "title": "怎麼選?", "readnum": "43243", "likenum": "3124" }' 
id能夠指定,能夠不指定;id不必定是數字,也能夠是字符串

3.查看記錄
curl 'localhost:9200/hupu/xxx/1?pretty=true'
4刪除記錄
curl -X DELETE 'localhost:9200/hupu/xxx/1'
5更新記錄
curl -X PUT 'localhost:9200/hupu/xxx/1' -d ' {
"title": "怎麼選?",
  "readnum": "43243",
  "likenum": "3124"

}'
6返回全部記錄
curl 'localhost:9200/hupu/xxx/_search'
took字段表示該操做的耗時(單位爲毫秒),timed_out字段表示是否超時,hits字段表示命中的記
tooktimed_outhits
  • total:返回記錄數,本例是2條。
  • max_score:最高的匹配程度,本例是1.0
  • hits:返回的記錄組成的數組。

返回的記錄中,每條記錄都有一個_score字段,表示匹配的程序,默認是按照這個字段降序排列。json

7 全文搜索數組

Elastic 的查詢很是特別,使用本身的查詢語法,要求 GET 請求帶有數據體。bash

$ curl 'localhost:9200/accounts/person/_search' -d ' { "query" : { "match" : { "desc" : "軟件" }} }' 

上面代碼使用 Match 查詢,指定的匹配條件是desc字段裏面包含"軟件"這個詞。返回結果以下。服務器

{ "took":3, "timed_out":false, "_shards":{"total":5,"successful":5,"failed":0}, "hits":{ "total":1, "max_score":0.28582606, "hits":[ { "_index":"accounts", "_type":"person", "_id":"1", "_score":0.28582606, "_source": { "user" : "張三", "title" : "工程師", "desc" : "數據庫管理,軟件開發" } } ] } } 

Elastic 默認一次返回10條結果,能夠經過size字段改變這個設置。curl

$ curl 'localhost:9200/accounts/person/_search' -d ' { "query" : { "match" : { "desc" : "管理" }}, "size": 1 }' 

上面代碼指定,每次只返回一條結果。

還能夠經過from字段,指定位移。

$ curl 'localhost:9200/accounts/person/_search' -d ' { "query" : { "match" : { "desc" : "管理" }}, "from": 1, "size": 1 }' 

上面代碼指定,從位置1開始(默認是從位置0開始),只返回一條結果。

8邏輯運算

若是有多個搜索關鍵字, Elastic 認爲它們是or關係。

$ curl 'localhost:9200/accounts/person/_search' -d ' { "query" : { "match" : { "desc" : "軟件 系統" }} }' 

上面代碼搜索的是軟件 or 系統

若是要執行多個關鍵詞的and搜索,必須使用布爾查詢

$ curl 'localhost:9200/accounts/person/_search' -d ' { "query": { "bool": { "must": [ { "match": { "desc": "軟件" } }, { "match": { "desc": "系統" } } ] } } }'
相關文章
相關標籤/搜索