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