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做排序操作则会出现上述报错。

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