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