Elasticsearch 参考指南(Count API)
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组,将选择一个副本并对其执行,这意味着副本增加了计数的可伸缩性。
路由
可以指定路由值(一个逗号分隔的路由值列表),以控制将在哪个碎片上执行计数请求。
相关推荐
newbornzhao 2020-09-14
染血白衣 2020-11-16
SAMXIE 2020-11-04
一个智障 2020-11-15
学习web前端 2020-11-09
yiranpiaoluo 2020-11-04
lxhuang 2020-11-03
88274956 2020-11-03
82387067 2020-11-03
huangliuyu00 2020-10-29
sichenglain 2020-10-27
Dayer 2020-10-27
小马的学习笔记 2020-10-23
liuweiITlove 2020-10-14
kjyiyi 2020-10-10
fanjunjaden 2020-10-09
zhyue 2020-09-28
huangliuyu00 2020-09-24
88397813 2020-09-23