3.4.2.21.Aggregations
创作人:扈臣聪、孙斌
审稿人:刘帅
一、基本概念
1、什么是聚合
在数据分析的过程中,我们通常会对有相同属性的数据集进行分类、计算,从而得到该数据某个或某些属性上在时间维度、地理维度等呈现的分布效果。聚合(Aggregations)根据搜索/查询文档上下文获得的数据集构建分析数据信息的工作单元。我们可以通过组合的方式完成复杂的数据分析和输出。
每种聚合都有特定的用途和输出结果,主要包含以下三个种类:
l 指标聚合(Metrics)
l 跟踪计算数据分析单元中的数据指标。
l 桶聚合(Bucket)
l 对数据文档进行分组,并按照分组的形式返回每组中的数据。
l 管道聚合(Pipeline)
l 从其他聚合结果中进行的聚合。
聚合功能为 Elasticsearch 注入了统计分析的血统,使用户在面对大数据提取统计指标时变得游刃有余。ES 聚合有丰富的聚合函数,可以满足绝大多数用户的需求,同时聚合结果会实时返回给用户。
1)指标概念(Metric)
对数据集内的数据进行最大值、最小值、平均值、求和等指标的计算,类似于 SQL 中的 max、
2)桶概念(Bucket)
又叫分组聚合,类似分类一样,在进行桶聚合时,评估每个文档的存储桶条件(分类),当满足存储桶条件时,就将该文档放入到对应的存储桶中。最终得到一个桶列表(不同的分类),每个桶中放着属于该桶的文档。例如按照 “地区” 聚合,一个人将被分到北京桶或上海桶或其他桶里。
3)聚合的结构
聚合的基本结构为:
{ "aggregations": { "<aggregation_name>": { "<aggregation_type>": { <aggregation_body> } } } }
其中 aggregations(可以简写为 aggs)为聚合操作的关键字,操作的对象是数据结构。每一个聚合关联一个用户自定义的逻辑聚合名(即 aggregation_name,例如平均年龄可以定义为 my_avg_age),这些逻辑名可以唯一地表示响应中的聚合结果。每一个聚合拥有一个特定的类型,比如平均值聚合为 avg,每一种聚合会根据聚合的性质定义参数(比如,平均值聚合会要求指定聚合的字段)。
4)测试数据集
在学习、练习 Elasticsearch 的时候,常常需要一些测试数据。这个时候我们可以选择手动导入或者直接使用官方的测试数据。官方测试数据链接如下:https://www.elastic.co/guide/cn/kibana/current/tutorial-load-dataset.html,遵循操作步骤即可以完成数据导入。
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(2) https://developer.aliyun.com/article/1229244