在ElasticSearch查询上使用Terms Aggregation时,结果会将存储桶限制为前10个项目或size参数上设置的值。例如:
{
"aggs" : {
"cities" : {
"terms" : {
"field" : "city",
"size": 20
}
}
}
}
该查询将为我提供前20个存储桶及其计数。如何更改此查询以了解唯一
"city"
字词的总数,因此可以显示“显示73个排名前20位的城市”之类的内容? 最佳答案
可以在同一查询上请求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