为什么?
.举个例子: 如果我们的集群有3个分片,此处我们想返回值最高的5个统计 。即size=5
,假设先不考虑shard_size
参数,那么此时每个节点会返回值最高的5个统计,然后再次聚合,返回,返回最终值最高的5个 。这个貌似没什么问题,但是因为我们的数据是分布es的各个节点上的,可能某个统计项(北京市的用户数
),在A节点是是排名前5,但是在B节点上不是排名前5,那么最终的统计结果是否是就会漏统计了 。
如何解决:
我们可以让es在每个节点上多返回几个结果,比如
:我们的size=5
,那么我们每个节点就返回 size * 1.5 + 10
个结果,那么误差相应的就会减少 。而这个size * 1.5 + 10
就是shard_size
的值,当然我们也可以手动指定,但一般需要比size的值大 。
文章插图
4.4 排序注意事项4.4.1 _count 排序默认情况下,使用的是
_count
倒序的,但是我们可以指定成升序,但是这是不推荐的,会导致错误结果 。如果我们想要升序,可以使用 rare_terms
聚合 。文章插图
4.4.2 字段值排序【elasticsearch聚合之bucket terms聚合】使用字段值排序,不管是正序还是倒序,结果是准确的 。
文章插图
4.4.3 子聚合排序
文章插图
4.5 多term聚合
文章插图
5、源码地址https://gitee.com/huan1993/spring-cloud-parent/blob/master/es/es8-api/src/main/java/com/huan/es8/aggregations/bucket/TermsAggs.java
6. 参考链接
- https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html
- https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-multi-terms-aggregation.html
经验总结扩展阅读
- 东南第一佳味天下之美的菜系是
- 孔雀为什么被称为百鸟之王
- 我儿王腾有大帝之姿是什么梗?
- “黑绷带的力量” 首先,它有一个奇怪的名字,叫“黑绷带” 其次,在看产品介绍之初,它是一款晚霜。
- 我的世界漏斗与漏斗之间怎么相连(我的世界漏斗上怎么放东西)
- 云原生之旅 - 11)基于 Kubernetes 动态伸缩 Jenkins Build Agents
- C#多线程之线程基础篇
- 我是特种兵之利刃出鞘吃豆腐脑是第几集?
- 獬豸是九子之一吗
- 洛谷 P4135 作诗 题解