Count API 允许轻松执行查询并获取该查询的匹配数。 它可以跨一个或多个索引并跨越一个或多个类型执行。 可以使用简单的查询字符串作为参数或使用在请求正文中定义的Query DSL来提供查询。 这里是一个例子:
PUT /twitter/tweet/1?refresh
{
"user": "kimchy"
}
GET /twitter/tweet/_count?q=user:kimchy
GET /twitter/tweet/_count
{
"query" : {
"term" : { "user" : "kimchy" }
}
}
注意
在正文中发送的查询必须嵌套在查询键中,与Search API相同
上面的两个例子都做同样的事情,这是从某个用户的 twitter 索引计数 tweets 的数量。 其结果是:
{
"count" : 1,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
}
}
查询是可选的,如果没有提供,它将使用match_all
来计算所有的文档。
count API 可以应用于多个索引中的多个类型。
当使用查询参数q
执行计数时,传递的查询是使用Lucene查询解析器的查询字符串。 还有其他可以传递的参数:
名称 | 描述 |
---|---|
df |
在查询中未定义字段前缀时使用的默认字段。 |
analyzer |
分析查询字符串时使用的分析器名称。 |
default_operator |
要使用的默认运算符,可以是AND 或OR 。 默认为OR 。 |
lenient |
如果设置为true 将导致基于格式的失败(例如向数字字段提供文本)被忽略。 默认为false 。 |
lowercase_expanded_terms |
术语是否自动小写,默认为true 。 |
analyze_wildcard |
是否分析通配符和前缀查询。 默认为false 。 |
terminate_after |
每个分片的最大计数,到达时,查询执行将提前终止。 如果设置,响应将具有布尔字段terminated_early 以指示查询执行是否实际已终止。 默认为无terminate_after 。 |
计数可以使用其身体内的Query DSL来表达应该执行的查询。 主体内容也可以作为名为source
的 REST 参数传递。
HTTP GET 和 HTTP POST 都可以用于以主体执行计数。 由于并不是所有的客户端都支持带主体的 GET,因此也允许 POST。
计数操作在所有分片上广播。 每个 shard id group 选择一个副本并对其执行。 这意味着副本增加了计数的可伸缩性。
##Routing (路由)
可以指定路由值(路由值的逗号分隔列表),以控制将对哪些分片执行计数请求。