1、ES聚合查询max返回结果有null值,当你java解析这个值时会得到-Infinity或者+Infinity。
会导致前端同学在使用值时,出现一些异常。比如:统计图中的话,就会出现异常峰值。
对bucket结果进行打印,可以查看到null值的valueAsString是-Infinity
2、其实这是一个ES的bug:
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/release-notes-7.11.0.html
只能说这个开发者对null值,直接返回一个无穷大或小的值,真实脑回路清奇!
3、那怎么解决呢?可以在解析时做一个判断:
Aggregations subAggregations = bucket.getAggregations();
Max maxValue = subAggregations.get("maxValue");
double value = maxValue.getValue();
if (Double.isInfinite(value)) {
value = 0;
}
希望对你有帮助。