分布式系统的近似统计算法
分布式系统的近似统计算法.pngmin 聚合分析的执行流程
-
这个分析的结果是准确的;
min 聚合分析的执行流程.png
Terms Aggregation | 返回参数中的 2 个特殊值
- doc_count_error_upper_bound:被遗漏的分桶中可能包含的文档数的最大数;
- sum_other_doc_count:除了返回结果中的 Bucket 中的文档以外,其他文档的数量(索引中总文档数 - 桶中返回的文档数);
Terms Aggregation | 执行流程
- 返回分桶中文档数最大的 3 个分桶;
-
结果不一定准确;
Terms 聚合分析执行流程.png
Terms 聚合不正确的案例
Terms 聚合不正确的案例.png- 文档数最多的 3 个桶应该是 A,B,D,但是 Terms 聚合的结果是 A,B,C;
doc_count_error_upper_bound | 举例分析
- 左边的分片中,选出来的文档数最大的 3 个桶中的文档数分别是:6, 4, 4,那么遗漏的文档数最大可能就是 4;
- 右边的分片中,选出来的文档数最大的 3 个桶中的文档数分别是:6, 3, 2,那么遗漏的文档数最大可能就是 2(图中有错);
sum_other_doc_count | 举例分析
- 索引中全部文档数 - 返回的 3 个桶中的文档总数,29 - 22 = 7;
解决 Terms 聚合不准的问题 | 提升 shard_size 的参数
Terms 聚合分析不准的原因
- 数据分散在多个分片上,Coordinating Node 无法获取数据的全貌;
解决方案 | 1
- 当数据量不大时,设置 Primary Shard 数为 1,实现准确性;
解决方案 | 2
- 当数据分布在多个 Primary Shard 上时,设置 shard_size 参数,提升准确性,其原理是:每次从 Shard 上额外多获取数据,提升准确率;
参数 | shard_size | 设定
通过调大 shard_size 的大小,使得 doc_count_error_upper_bound 的值降低,从而提升准确度,其原理是:增加整体计算量,提高精准度的同时会降低响应时间;
shard_size 默认大小
shard_size = size * 1.5 + 10
网友评论