Elasticsearch搜尋API


此API用於在Elasticsearch中搜尋內容。 使用者可以通過傳送具有查詢字串的獲取請求作為引數或在請求的訊息正文中的查詢來進行搜尋。所有的搜尋API都是多索引,多型別。

多索引

Elasticsearch允許我們搜尋存在於所有索引或一些特定索引中的文件。 例如,如果我們需要搜尋名稱包含central的所有文件。

GET http://localhost:9200/_search?q = name:central

響應

{
   "took":78, "timed_out":false, "_shards":{"total":10, "successful":10, "failed":0},
   "hits":{
      "total":1, "max_score":0.19178301, "hits":[{
         "_index":"schools", "_type":"school", "_id":"1", "_score":0.19178301,
         "_source":{
            "name":"Central School", "description":"CBSE Affiliation", 
            "street":"Nagan", "city":"paprola", "state":"HP", "zip":"176115",
            "location":[31.8955385, 76.8380405], "fees":2000, 
            "tags":["Senior Secondary", "beautiful campus"], "rating":"3.5"
         }
      }]
   }
}

或者,同樣地我們可以在schoolsschools_gov索引中搜尋 -

多型別

還可以在所有型別或某種指定型別的索引中搜尋所有文件。 例如,

Get http://localhost:9200/schools/_search?q = tags:sports

響應

{
   "took":16, "timed_out":false, "_shards":{"total":5, "successful":5, "failed":0},
   "hits":{
      "total":1, "max_score":0.5, "hits":[{
         "_index":"schools", "_type":"school", "_id":"2", "_score":0.5,
         "_source":{
            "name":"Saint Paul School", "description":"ICSE Afiliation", 
            "street":"Dawarka", "city":"Delhi", "state":"Delhi", "zip":"110075", 
            "location":[28.5733056, 77.0122136], "fees":5000, 
            "tags":["Good Faculty", "Great Sports"], "rating":"4.5"
         }
      }]
   }
}

URI搜尋

如下這些引數可以使用統一資源識別符號在搜尋操作中傳遞 -

編號 引數 說明
1 Q 此引數用於指定查詢字串。
2 lenient 基於格式的錯誤可以通過將此引數設定為true來忽略。預設情況下為false
3 fields 此引數用於在響應中選擇返回欄位。
4 sort 可以通過使用這個引數獲得排序結果,這個引數的可能值是fieldNamefieldName:ascfieldname:desc
5 timeout 使用此引數限定搜尋時間,響應只包含指定時間內的匹配。預設情況下,無超時。
6 terminate_after 可以將響應限制為每個分片的指定數量的文件,當到達這個數量以後,查詢將提前終止。 預設情況下不設定terminate_after
7 從命中的索引開始返回。預設值為0
8 size 它表示要返回的命中數。預設值為10

請求正文搜尋

還可以在請求正文中使用查詢DSL來指定查詢,並且在前面的章節中已經給出了很多範例,

POST http://localhost:9200/schools/_search

請求正文

{
   "query":{
      "query_string":{
         "query":"up"
      }
   }
}

響應

……………………………………………….
{
   "_source":{
      "name":"City School", "description":"ICSE", "street":"West End",
      "city":"Meerut", "state":"UP", "zip":"250002", "location":[28.9926174, 77.692485],
      "fees":3500, "tags":["Well equipped labs"],"rating":"4.5"
   }
}
……………………………………………….