搜索請求實體(Request Body Search)
Request Body Search
可以使用搜索DSL來執行搜索請求,再其請求體中包括Query DSL。這是一個例子:
GET /twitter/tweet/_search { "query" : { "term" : { "user" : "kimchy" } } }
這裏是一個示例響應:
{ "took": 1, "timed_out": false, "_shards":{ "total" : 1, "successful" : 1, "failed" : 0 }, "hits":{ "total" : 1, "max_score": 1.3862944, "hits" : [ { "_index" : "twitter", "_type" : "tweet", "_id" : "0", "_score": 1.3862944, "_source" : { "user" : "kimchy", "message": "trying out Elasticsearch", "date" : "2009-11-15T14:12:12", "likes" : 0 } } ] } }
Parameters
|
搜索超時,限制在指定時間值內執行的搜索請求,並在到期時積累的命中保釋。默認為無超時。請參閱“Time unitsedit”一節。 |
|
從某個偏移量中檢索匹配。默認為0。 |
|
要返回的命中數。默認為10。如果您不關心返回的命中,但僅關於匹配and/or聚合的數量,將值設置為0將有助於提高性能。 |
|
要執行的搜索操作的類型。可以是dfs_query_then_fetch或query_then_fetch。默認為query_then_fetch。查看搜索類型了解更多。 |
|
設置為true或false以啟用或禁用大小為0的請求的搜索結果的緩存,即聚合和建議(不返回頂部匹配)。請參閱Shard請求緩存。 |
|
每個分片收集的最大文檔數量,到達時查詢執行將提前終止。如果設置,響應將有一個布爾字段terminate_early來指示查詢執行是否實際已終止。默認沒有terminate_after。 |
在上述中,search_type和request_cache必須作為查詢字符串參數傳遞。搜索請求的其余部分應在主體本身內傳遞。請求體內容也可以作為名為source的REST參數傳遞。
HTTP GET和HTTP POST都可以通過請求體來執行搜索。由於並非所有客戶端都支持請求體GET,POST也是允許的。
Fast check for any matching docs(快速檢查任何匹配的文檔)
如果我們只想知道是否有匹配特定查詢的文檔,我們可以將大小設置為0,表示我們對搜索結果不感興趣。此外,我們可以將terminate_after設置為1,以指示每當找到第一個匹配文檔(每個分片)時,查詢執行可以被終止。
GET /_search?q=message:elasticsearch&size=0&terminate_after=1
響應將不會包含任何匹配,因為大小設置為0。hits.total將等於0,表示沒有匹配的文檔,或大於0表示在提前終止時至少有相同數量的匹配查詢文檔。此外,如果查詢提前終止,則在響應中將terminate_early標誌設置為true。
{ "took": 3, "timed_out": false, "terminated_early": true, "_shards": { "total": 1, "successful": 1, "failed": 0 }, "hits": { "total": 1, "max_score": 0.0, "hits": [] } }
原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-request-body.html
搜索請求實體(Request Body Search)