count API容許輕鬆執行查詢並獲取該查詢的匹配數,它能夠跨一個或多個索引執行,查詢可使用簡單的查詢字符串做爲參數提供,也可使用請求體中定義的查詢DSL,這裏有一個例子:api
PUT /twitter/_doc/1?refresh { "user": "kimchy" } GET /twitter/_doc/_count?q=user:kimchy GET /twitter/_doc/_count { "query" : { "term" : { "user" : "kimchy" } } }
在body中發送的查詢必須嵌套在
query
鍵中,這與搜索api的工做原理相同。
上面的兩個例子都作了一樣的事情,那就是計算某個用戶的twitter
索引中的tweet數量,結果是:code
{ "count" : 1, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 } }
查詢是可選的,若是沒有提供查詢,它將使用match_all
來計算全部文檔。索引
count API能夠應用於多個索引。ip
使用查詢參數q
執行計數時,傳遞的查詢是使用Lucene查詢解析器的查詢字符串,還能夠傳遞其餘參數:路由
名稱 | 描述 |
---|---|
df |
在查詢中沒有定義字段前綴時使用的默認字段 |
analyzer |
分析查詢字符串時使用的分析器名稱 |
default_operator |
要使用的默認操做符,能夠是AND 或OR ,默認是OR |
lenient |
若是設置爲true ,將致使基於格式的失敗(好比向數字字段提供文本)被忽,默認爲false |
analyze_wildcard |
是否應該分析通配符和前綴查詢,默認爲false |
terminate_after |
每一個碎片的最大計數,到達後查詢執行將提早終止,若是設置了,響應將具備一個布爾字段terminated_early ,以指示查詢執行是否確實terminated_early,默認爲no terminate_after |
count能夠在其body中使用查詢DSL來表示應該執行的查詢,body內容也能夠做爲名爲source
的REST參數傳遞。文檔
HTTP GET和HTTP POST均可以用body執行count,因爲不是全部的客戶端都支持GET使用body, POST也是容許的。字符串
計數操做在全部碎片上廣播,對於每一個碎片id組,將選擇一個副本並對其執行,這意味着副本增長了計數的可伸縮性。it
能夠指定路由值(一個逗號分隔的路由值列表),以控制將在哪一個碎片上執行計數請求。table