diff --git a/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/InternalOrder.java b/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/InternalOrder.java index f3979d6e059f3..55696ad37cebe 100644 --- a/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/InternalOrder.java +++ b/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/InternalOrder.java @@ -212,8 +212,11 @@ public int compare(Terms.Bucket o1, Terms.Bucket o2) { double v2 = ((MetricsAggregator.MultiValue) aggregator).metric(valueName, ((InternalTerms.Bucket) o2).bucketOrd); // some metrics may return NaN (eg. avg, variance, etc...) in which case we'd like to push all of those to // the bottom - if (v1 == Double.NaN) { - return asc ? 1 : -1; + if (Double.isNaN(v1)) { + return 1; + } + if (Double.isNaN(v2)) { + return -1; } return asc ? Double.compare(v1, v2) : Double.compare(v2, v1); } @@ -227,8 +230,11 @@ public int compare(Terms.Bucket o1, Terms.Bucket o2) { double v2 = ((MetricsAggregator.SingleValue) aggregator).metric(((InternalTerms.Bucket) o2).bucketOrd); // some metrics may return NaN (eg. avg, variance, etc...) in which case we'd like to push all of those to // the bottom - if (v1 == Double.NaN) { - return asc ? 1 : -1; + if (Double.isNaN(v1)) { + return 1; + } + if (Double.isNaN(v2)) { + return -1; } return asc ? Double.compare(v1, v2) : Double.compare(v2, v1); }