我使用elasticsearch术语聚合来查看有多少文档在其“foo”字段中具有特定值,如下所示:
{
...
"aggregations": {
"metastore": {
"terms": {
"field": "foo",
"size": 50
}
}
}
}
我得到的答复是:
"aggregations": {
"foo": {
"buckets": [
{
"key_as_string": "2018-10-01T00:00:00.000Z",
"key": 1538352000000,
"doc_count": 935
},
{
"key_as_string": "2018-11-01T00:00:00.000Z",
"key": 1541030400000,
"doc_count": 15839
},
...
/* 48 more values */
]
}
}
但我将不同值的数目限制为50。如果这个字段中有更多不同的值,它们不会在响应中返回,这很好,因为我不需要全部返回,但是我想知道它们有多少。那么,如何得到不同值的总数呢?如果答案提供了完整的示例查询,那就太棒了,谢谢。
2条答案
按热度按时间6ojccjat1#
您可能可以添加一个基数聚合,它将为字段提供唯一数量的项。这将等于术语聚合的桶数。
注意:请记住基数聚合在某些情况下可能返回近似计数。要了解更多信息,请阅读这里。
bgtovc5b2#
这个
cardinality
聚合是有帮助的。不过,请注意,返回的数字只是一个近似值,可能无法反映如果您请求所有桶,您将获得的桶的确切数量。但是,在低基数字段上,精度相当高。