主要知识点:
一、易并行聚合算法(如max)
es是多分步式的结构的,所以当你做下个搜索或计算时都是会在各个node上执行,所以有些聚合分析的算法,是很容易就可以并行执行的,比如说max,你要在你的数据库中找一个最大的但,只需要两步
这两步在es中都是容易执行的(不会在coordinary node中占用大量内存,也不会在coordinary node占用大量cpu)
二、不易并行聚合算法(如count(distinct)
现在假设要计算count(distinct)。也就是说找出所有唯一值的总和,要执行这个算法es会执行以下几步
在这个过程中coordinary node会至少保留300万条(假设只有3个node)数据,并要对这300万条数据做处理,这样对coordinary node,不管是内存还是cpu的压力都很大,这就是不易并行聚合算法。
三、三角选择原则
在精准、实时、大数据 这三个条件中只能选择2个放弃一个。
四、近似聚合算法
es对那些不易平行处理的算法是采用会近似聚合的方式,就是采用在每个node上进行近估计的方式,得到最终的结论,近似估计后的结果,不完全准确,但是速度会很快,一般会达到完全精准算法的性能的数十倍。es如果采取近似估计算未能延时在100ms左右,0.5%错误率。