Count API
count API允许轻松执行查询并获取该查询的匹配数,它可以跨一个或多个索引执行,查询可以使用简单的查询字符串作为参数提供,也可以使用请求体中定义的查询DSL,这里有一个例子:
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数量,结果是:
{
"count" : 1,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
}
}
查询是可选的,如果没有提供查询,它将使用match_all
来计算所有文档。
多索引
count API可以应用于多个索引。
请求参数
使用查询参数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组,将选择一个副本并对其执行,这意味着副本增加了计数的可伸缩性。
路由
可以指定路由值(一个逗号分隔的路由值列表),以控制将在哪个碎片上执行计数请求。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。