ES對聚合結果排序報錯

開發環境

  • ElasticSearch版本: 5.6.1

問題現象

在規定時間段內對省份進行聚合,然後對每個省份出現次數做聚合sum然後進行倒序排序,當部分省份在查詢時間段沒有記錄時會報array_index_out_of_bounds_exception錯誤,具體返回結果如下:
在這裏插入圖片描述
當去除對每個省份出現次數做聚合sum然後進行倒序排序的操作後,則不會出現報錯
在這裏插入圖片描述

問題探究

爲了保證每個省份都能顯示(即使在時間區段內未出現,聚合sum的結果爲0),在對省份進行聚合時添加了min_doc_count: 0使得沒有記錄的省份也被分桶聚合。

但當我min_doc_count設置爲1時,即至少出現一次記錄纔可以被聚合,則不會報錯
在這裏插入圖片描述

原因分析

在對省份進行聚合時,如果doc_count: 0,即沒有該省份的記錄,則對totalCount做sum聚合產生的結果可能爲null,對null做排序操作則會出現上述報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章