我使用具有复合聚合的 ElasticSearch 搜索请求,以获得一个特定字段的所有不同索引值的列表。 结果给了我所需的一切,但我不需要包含的所有信息。
要求:
{
"aggs": {
"my_buckets": {
"composite": {
"size": 10000,
"sources": [{
"my_stoid": {
"terms": {
"field": "stoId"
}
}
}
]
}
}
},
"size": 0
}
回应:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 15,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"composite#my_buckets": {
"after_key": {
"my_stoid": "KV"
},
"buckets": [{
"key": {
"my_stoid": "1"
},
"doc_count": 5
}, {
"key": {
"my_stoid": "2102"
},
"doc_count": 1
}, {
"key": {
"my_stoid": "8000"
},
"doc_count": 1
}, {
"key": {
"my_stoid": "9999"
},
"doc_count": 6
}, {
"key": {
"my_stoid": "KB"
},
"doc_count": 1
}, {
"key": {
"my_stoid": "KV"
},
"doc_count": 1
}
]
}
}
}
我只需要桶中的值“1”、“2102”、“8000”...。 像这样:
"buckets": ["1", "2102", "8000", "9999", "KB", "KV"]
有没有办法实现这个目标?
Elasticsearch 论坛中的一个类似问题得到了这个答案:
文档计数的计算成本非常低,因为它只是为每个存储桶维护和增加一个 long。维护和更新每个存储桶的子聚合的成本将远高于此,因此它不会显着影响聚合请求的性能。