
相比普通的`terms aggregation`,`multi terms aggregation`有以下特别之处:
1.支持多字段聚合
• `terms aggregation`:只能对单个字段进行聚合,无法直接对多个字段同时进行聚合。
• `multi terms aggregation`:可以同时对多个字段进行聚合,并将这些字段的值组合成一个复合键(composite key)。例如,可以同时根据`genre`和`product`字段进行聚合,生成一个包含这两个字段值的桶。
2.性能和内存消耗
• `terms aggregation`:通常更快且更节省内存。它利用全局序号(global ordinals)来优化性能。
• `multi terms aggregation`:由于需要处理多个字段,通常会比`terms aggregation`更慢且消耗更多内存。
3.适用场景
• `terms aggregation`:适用于对单个字段进行聚合的场景。
• `multi terms aggregation`:适用于需要根据多个字段的组合值进行聚合,并且需要对结果进行排序(例如按文档数量或度量聚合值排序)的场景。
4.灵活性
• `terms aggregation`:不支持从多个字段中收集术语,但可以通过`copy_to`字段或脚本实现类似功能。
• `multi terms aggregation`:提供了更灵活的多字段聚合方式,可以直接在查询中指定多个字段。
5.结果表示
• `terms aggregation`:返回单个字段的聚合结果。
• `multi terms aggregation`:返回复合键的聚合结果,每个桶的键是一个数组,包含多个字段的值。
Elasticsearch多字段聚合方式对比

最低0.47元/天 解锁文章
1128

被折叠的 条评论
为什么被折叠?



