在ElasticSearch查询中使用Terms Aggregation时,结果会将存储桶限制为前10项或size参数上设置的值。例如:
{
"aggs" : {
"cities" : {
"terms" : {
"field" : "city",
"size": 20
}
}
}
}
这个查询会给我前20个桶及其数量。如何更改此查询以了解唯一"city"
字词的总数,因此我可以提供类似&#34; 显示73个&#34;的前20个城市的内容?< / p>
答案 0 :(得分:1)
可以在同一查询中请求Cardinality Aggregation。所以在提供的示例中,我们将:
{
"aggs" : {
"cities" : {
"terms" : {
"field" : "city",
"size": 20
}
},
"unique_cities": {
"cardinality": {
"field": "city"
}
}
}
}
除了"aggregations"
元素(包含"cities"
)之外,buckets
响应还会包含带基数的"unique_cities"
元素:
"unique_cities": {
"value": 73
}
github对此问题的看法: Return number of buckets for terms aggregation