elasticsearch 的 aggregation 出来的结果和数据库 group by 相差比较多怎么解决?

2017-06-08 15:57:40 +08:00
 nec
如题

比如:

"aggs": {
"ana_col_value": {
"terms": {
"field":"utm_id",
"size":100000000
}
}}

得到的结果比用 group by 的多很多或者少一些,请问怎么解决?
1478 次点击
所在节点    问与答
4 条回复
mkstring
2017-06-08 16:13:40 +08:00
ES 的聚合结果是近似的,不一定完全正确。
主要原因是不同 shard 分别执行聚合函数,之后合并结果。当只要 top 2 结果时,假设有两个 shard,第一个 shard 返回的是 a b,第二个 shard 返回的是 b c,对每个 shard 来说结果都是正确的,但是合并之后的结果就是错误的。
lightening
2017-06-08 16:19:33 +08:00
@mkstring 你这种情况最后会得到 abc 三个,可以准确判断出最终结果。当你只要第一页结果时,aggregation 是准确的。问题是出在当你想要第二页时,每个 shard 返回它的第二页,才会有问题。
mortonnex
2017-06-08 16:31:11 +08:00
@mkstring @lightening
请问怎么解决这个问题呢
lightening
2017-06-08 20:29:39 +08:00
ES 出来的结果太多还是太少?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/366985

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX