编程随笔-ElasticSearch知识导图(5):聚合

2022-01-10 00:00:00 查询 字段 指令 分组 聚合

1. 聚合模式

  聚合(Aggregations)是对数据库中数据域进行统计分析的手段,关系数据库中我们常会用到avg,sum,count,group by这些聚合手段进行简单的统计与分析。在ES中也提供了同样的功能,根据使用模式,分为以下几种:

  • 数字指标(metrics)聚合:根据输出的是单值的还是多值的分为单值数字指标与多值数字指标,计算使用的域可直接从文本中抽取也可使用脚本生成。
  • 分组(bucket)聚合:分组聚合创建文档对象的分组。每个分组都与一个分组依据 (凭证)相关联(取决于聚合类型),该依据确定当前上下文中的文档是否“属于”其中。分组聚合还计算并返回每个分组中文档数量。分组聚合可以嵌套,即一个分组中还可以定义子分组。分组聚合支持对父子关系对象和嵌套对象的聚合。
  • 管道(Pipeline)聚合:处理来自其它聚合的数据,而不是直接计算文档对象的域值得到输出。管道聚合可以分为两类:
    • 父(parent)聚合:一组管道聚合的输入数据由其父聚合的输出提供,能够计算新分组或新聚合添加到现有组中。
    • 兄弟(sibling)聚合:输入数据由同级聚合的输出提供,新产生的聚合域与所使用的输入聚合同级。

  文献1中还提到了矩阵(Matrix)聚合,它对多个字段进行操作,并根据字段值生成一个矩阵结果,该矩阵是对这些字段的一些统计数据。因为比较小众,本文中不做讨论。   数字指标聚合、分组聚合类似于关系数据库中的avg,sum,count,group by等聚合形式,在应用系统中经常会使用。管道聚合是数字指标聚合及分组聚合的进阶使用,语法派生于数字指标聚合、分组聚合,本文暂不探讨,有兴趣的同学看参考文献1。   可将数字指标聚合、分组聚合的语法和用法总结如下一张导图。

相关文章