summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregator.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregator.java')
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregator.java35
1 files changed, 18 insertions, 17 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregator.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregator.java
index d6faf5cbb7..8dd78bf137 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregator.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/stats/extended/ExtendedStatsAggregator.java
@@ -102,24 +102,25 @@ public class ExtendedStatsAggregator extends NumericMetricsAggregator.MultiValue
maxes.fill(from, overSize, Double.NEGATIVE_INFINITY);
}
- values.setDocument(doc);
- final int valuesCount = values.count();
- counts.increment(bucket, valuesCount);
- double sum = 0;
- double sumOfSqr = 0;
- double min = mins.get(bucket);
- double max = maxes.get(bucket);
- for (int i = 0; i < valuesCount; i++) {
- double value = values.valueAt(i);
- sum += value;
- sumOfSqr += value * value;
- min = Math.min(min, value);
- max = Math.max(max, value);
+ if (values.advanceExact(doc)) {
+ final int valuesCount = values.docValueCount();
+ counts.increment(bucket, valuesCount);
+ double sum = 0;
+ double sumOfSqr = 0;
+ double min = mins.get(bucket);
+ double max = maxes.get(bucket);
+ for (int i = 0; i < valuesCount; i++) {
+ double value = values.nextValue();
+ sum += value;
+ sumOfSqr += value * value;
+ min = Math.min(min, value);
+ max = Math.max(max, value);
+ }
+ sums.increment(bucket, sum);
+ sumOfSqrs.increment(bucket, sumOfSqr);
+ mins.set(bucket, min);
+ maxes.set(bucket, max);
}
- sums.increment(bucket, sum);
- sumOfSqrs.increment(bucket, sumOfSqr);
- mins.set(bucket, min);
- maxes.set(bucket, max);
}
};