記錄一個Elasticsearch的坑 “doc_count_error_upper_bound“ : -1

Evado發表於2020-10-12

聚合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;

如果資料量再多怎麼辦了......

 

 

 

相關文章