Elasticsearch多字段Terms聚合实现方法问询
实现Elasticsearch多字段独立Terms聚合
没问题!既然你已经成功搞定了单个first-metadata字段的Terms聚合,要扩展到second-metadata、third-metadata这类多个元数字段,直接在aggs节点下添加多个独立的Terms聚合配置即可,每个配置对应一个目标字段。
完整查询示例
GET index/_search { "aggs": { "first-metadata": { "terms": { "field": "filters.metadata.first-metadata" } }, "second-metadata": { "terms": { "field": "filters.metadata.second-metadata" } }, "third-metadata": { "terms": { "field": "filters.metadata.third-metadata" } } }, "size": 0 // 可选:如果不需要返回原始文档,加这个能减少响应体积,提升查询效率 }
预期响应结构
执行后你会得到每个字段独立的聚合统计结果,格式大概是这样:
{ "aggregations": { "first-metadata": { "buckets": [ { "key": 87000, "doc_count": 2 }, { "key": 100000, "doc_count": 1 } ] }, "second-metadata": { "buckets": [ { "key": "sample-value-1", "doc_count": 5 }, { "key": "sample-value-2", "doc_count": 3 } ] }, "third-metadata": { "buckets": [ { "key": "another-sample", "doc_count": 10 } ] } } }
小提示
如果你的元数字段有统一的命名规则,也可以考虑用脚本聚合来简化配置,但对于数量不多的固定字段,直接写多个独立聚合块是最直观且高效的方式。
内容的提问来源于stack exchange,提问作者Piotr Pradzynski
相关产品推荐
相关产品推荐

