nec
V2EX  ›  问与答

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

  •  
  •   nec · Jun 8, 2017 · 1888 views
    This topic created in 3285 days ago, the information mentioned may be changed or developed.
    如题

    比如:

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

    得到的结果比用 group by 的多很多或者少一些,请问怎么解决?
    4 replies    2017-06-08 20:29:39 +08:00
    mkstring
        1
    mkstring  
       Jun 8, 2017
    ES 的聚合结果是近似的,不一定完全正确。
    主要原因是不同 shard 分别执行聚合函数,之后合并结果。当只要 top 2 结果时,假设有两个 shard,第一个 shard 返回的是 a b,第二个 shard 返回的是 b c,对每个 shard 来说结果都是正确的,但是合并之后的结果就是错误的。
    lightening
        2
    lightening  
       Jun 8, 2017
    @mkstring 你这种情况最后会得到 abc 三个,可以准确判断出最终结果。当你只要第一页结果时,aggregation 是准确的。问题是出在当你想要第二页时,每个 shard 返回它的第二页,才会有问题。
    mortonnex
        3
    mortonnex  
       Jun 8, 2017
    @mkstring @lightening
    请问怎么解决这个问题呢
    lightening
        4
    lightening  
       Jun 8, 2017
    ES 出来的结果太多还是太少?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1247 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 17:41 · PVG 01:41 · LAX 10:41 · JFK 13:41
    ♥ Do have faith in what you're doing.