聚合分析是非常重要的一种分析方式,因为只有把相同特征的数据聚合到一起,你才能看到问题的本质。聚合的本质其实就是一个分组的概念,比如说求解某个指标的平均值、极大值、极小值、方差等,都可以使用聚合分析来做。同样你也可以选择把数据都取回来,然后在本地统计,但是你需要考虑到网络的问题,如果数据比较多,就会一直占用 ES 资源,另外一个问题是,你本地内存是否够用、运算时间较长等问题,ES 是分布式的,性能强大,统计需求完全可以放在 ES 来做,然后返回结果。
在前面的课时上,有介绍如何使用 Kibana 做聚合分桶,然后将结果可视化。但是有时候这远远不能满足我们的需求,可能我们需要统计值来其他需求上的支持,或者需要把统计值加上业务逻辑,这个时候就需要把统计值取回来,而不是在 Kibana 上做可视化分析。取是个关键步骤,最关键的还是如何取?DSL 该如何写?
指标聚合
指标来自于文档的某个字段,有的聚合会产生单个值,这个被叫做单值数字指标聚合,像求取平均值的聚合 avg,有的则会产生多个值,被称作多值数据指标聚合,像 stats。聚合的过程也就是分桶的过程,粗浅一点就是 group by 的过程,根据什么来进行分组数据?
使用 Kibana 自带的电子商务订单索引为案例的