Elasticsearch 聚合分析简介 电脑版发表于:2020/12/26 16:51  >#Elasticsearch 聚合分析简介 [TOC] 什么是聚合(Aggregation) ------------  tn>聚合:对有关的数据进行内容挑选、分析、归类(筛选),最后分析得到人们想要的结果。`Elasticsearch` 除搜索以外,**提供根据ES的数据进行统计分析的功能**,并且实时性高。如果用`Hadoop`来处理的话会要用1天的时间。通过聚合,我们会得到一个数据概览,是**分析和总结全套的数据**,而不是去寻找单个文档。 比如:获取多少价格之间的商品数量,最火热的销售商品排序。 同样也有**高性能**的特点,只需要一条语句,就可以从`Elasticsearch`得到分析结果。无需在客户端自己实现分析逻辑。在Kibana中也是有可视化报告的聚合分析。 集合的分类 ------------ - Bucket Aggregation - 一些列满足特定条件的文档的集合 - Metric Aggregation - 一些数学运算,可以对文档字段进行统计分析 - Pipeline Aggregation - 对其他的具体结果进行二次聚合 - Matrix Aggregation - 支持对多个字段的操作并提供一个结果矩阵 >### Bucket & Metric  tn>Bucket 的例子(多种划分的文档)   tn>Metric 会基于数据集计算结果,除了支持在字段上进行计算,同样也支持在脚本产生的结果之上进行计算。大多数 Metric 是数学计算,仅输出一个值 `min / max / sum / avg / cardinality`。 部分 Metric 支持输出多个数值 `stats / percentiles / percentile_ranks`。 Demo示范 ------------ tn>首先请大家安装好航空测试数据,如不知道如何装载的请按照下图所示    >### Bucket Demo tn>这里我们目的地进行分桶统计,在结果中对其进行了分组 ```bash GET kibana_sample_data_flights/_search { "size": 0, "aggs":{ "flight_dest":{ "terms":{ "field":"DestCountry" } } } } ```  >### Metric Demo tn>查看航班目的地的统计信息,增加平均,最高最低价格 ```bash GET kibana_sample_data_flights/_search { "size": 0, "aggs":{ "flight_dest":{ "terms":{ "field":"DestCountry" }, "aggs":{ "avg_price":{ "avg":{ "field":"AvgTicketPrice" } }, "max_price":{ "max":{ "field":"AvgTicketPrice" } }, "min_price":{ "min":{ "field":"AvgTicketPrice" } } } } } } ```  tn>价格统计信息+天气信息(实现在字段中进行分组) ```bash GET kibana_sample_data_flights/_search { "size": 0, "aggs":{ "flight_dest":{ "terms":{ "field":"DestCountry" }, "aggs":{ "stats_price":{ "stats":{ "field":"AvgTicketPrice" } }, "wather":{ "terms": { "field": "DestWeather", "size": 5 } } } } } } ``` 