V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nec
V2EX  ›  问与答

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

  •  
  •   nec · 2017-06-08 15:57:40 +08:00 · 1412 次点击
    这是一个创建于 2514 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题

    比如:

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

    得到的结果比用 group by 的多很多或者少一些,请问怎么解决?
    4 条回复    2017-06-08 20:29:39 +08:00
    mkstring
        1
    mkstring  
       2017-06-08 16:13:40 +08:00
    ES 的聚合结果是近似的,不一定完全正确。
    主要原因是不同 shard 分别执行聚合函数,之后合并结果。当只要 top 2 结果时,假设有两个 shard,第一个 shard 返回的是 a b,第二个 shard 返回的是 b c,对每个 shard 来说结果都是正确的,但是合并之后的结果就是错误的。
    lightening
        2
    lightening  
       2017-06-08 16:19:33 +08:00
    @mkstring 你这种情况最后会得到 abc 三个,可以准确判断出最终结果。当你只要第一页结果时,aggregation 是准确的。问题是出在当你想要第二页时,每个 shard 返回它的第二页,才会有问题。
    mortonnex
        3
    mortonnex  
       2017-06-08 16:31:11 +08:00
    @mkstring @lightening
    请问怎么解决这个问题呢
    lightening
        4
    lightening  
       2017-06-08 20:29:39 +08:00
    ES 出来的结果太多还是太少?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1324 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:52 · PVG 01:52 · LAX 10:52 · JFK 13:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.