Elasticsearch 參考指南(Count API)

Count API

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 要使用的默認操做符,能夠是ANDOR,默認是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

相關文章
相關標籤/搜索