Elasticsearch实战(十九)---ES聚合算法易并行聚合算法及近似聚合算法及三角选择原则

本文介绍了Elasticsearch中的三种聚合算法:易并行聚合用于max、min等操作,近似计算适用于count(distinct)等场景,以牺牲精度换取效率,三角选择原则指导如何在精准、实时和大数据量间权衡。理解这些原理有助于选择合适的聚合策略。
摘要由CSDN通过智能技术生成

Elasticsearch实战-ES聚合算法易并行聚合算法及近似聚合算法及三角选择原则


ElasticSearch聚合分析中的算法有三种

  • 易并行聚合算法
  • 近似聚合算法
  • 三角选择原则
1.易并行聚合算法

易并行聚合算法,存在多个分片节点和一个协调节点,协调节点会把所有所有共享节点的结果汇总进行最终计算,得出最终结果,比如聚合中的 max,min等
所有分片节点计算max后,传递到协调节点,协调节点将所有的max值进行比较后得出最大的max值,然后返回客户端,这种方式就是易并行聚合算法

如图:所有的shard分片 各自取数据,然后汇总到coordinate协调节点取处理,得出max
在这里插入图片描述

2.近似计算聚合算法

近似聚合算法就是用近似值来进行统计计算,并不是完全准确,但是统计的效率非常高,效率是精准算法的数十倍,比如count(distinct)去重统计,就是采用的近似聚合算法
每个分片都有1w的全部非重复数据,但是无法保证不同的几点钟数据一定不重复,如果是精确计算,需要把每个节点的1w全部非重复数据全复制传输到协调节点,比如有3个shard节点,1个协调节点

  • 如果是精确计算 那么协调节点需要传输3w的数据+自身1w的数据,等于协调节点需要处理4w的数据,进行去重统计,最终的到结果,精确计算适用于大数据批量处理,精度要求高,但是对于实时性要求低的这种场景,精确计算对于节点的计算和网络传输压力都非常大,所以ES对于count采用的是近似计算
  • 近似计算会出现5%的错误率,比如你现在有100条精确结果,如果使用近似聚合计算,得出的结果是 95-105条 之间,近似估计后的结果,不完全准确,但是速度会很快,一般会达到完全精准的算法的性能的数十倍

如图,每个节点取100w个值,然后对每个节点都取count,然后对他们汇总处理,这里协调节点不是处理的全部数据,而是部分数据,所以就会有误差
在这里插入图片描述

3.三角选择原则

对于聚合场景,无非以下三种场景,但是我们不能同时满足三条,比如你想精确查找且数据量较大,那么实时性要求就要降低,因为这么大的数据做精确计算,肯定耗时比较久,比如你想大数据量而且实时性要求高,那么你就采用近似计算,不要用精确查找,精确查找实时性肯定不能满足

  • 精准查找
  • 实时要求
  • 大数据量

所以只能选择其中2条去满足

  1. 精准查找+实时要求: 那就没有大数据,数据量很小,数据量小的情况下,随便处理都可是实时满足要求
  2. 精准查找+大数据量:如hadoop,批处理,非实时,可以处理海量数据,保证精准,时间有可能几个小时,甚至十几个小时
  3. 大数据量+实时要求:采用近似估计,es结果不精准,可能会存在一定的错误率

至此 我们已经学习了 ES聚合算法易并行聚合算法及近似聚合算法及三角选择原则,要根据自己的场景去选择合适的计算方式,这样才能得出想要的结果

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值