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

相关文章
相关标签/搜索