聚合TOP100 问题
原业务mysql处理 "select account,avg(score) avgScore from XXX group by account order by avgScore limit 100"
现业务 es 处理 "{ "aggs": {"groupBy": { "terms": { "field": "account ", "order": { "avgScore": "desc"},"size": 100 },
"aggs": { "avgScore": {"avg": {"field": "score"}}}}},
"track_total_hits": true}
上线,一切正常!一个国庆后,线上的数据出错了。。。
"doc_count_error_upper_bound" : -1
网上结果表明:一个shard会完全精准,多个shard 就很糟心(因为是取了所有分片的 top 100 ,再进行合并)
线上问题比较棘手;
解决方案;size:给出预计数据:比如,account有8888个 size传入8888 再通过程序取前100;
如果数据量再多怎么办了......