summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregator.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregator.java')
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregator.java37
1 files changed, 19 insertions, 18 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregator.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregator.java
index 4b547989d8..a3a038cfa3 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregator.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/HistogramAggregator.java
@@ -101,25 +101,26 @@ class HistogramAggregator extends BucketsAggregator {
@Override
public void collect(int doc, long bucket) throws IOException {
assert bucket == 0;
- values.setDocument(doc);
- final int valuesCount = values.count();
-
- double previousKey = Double.NEGATIVE_INFINITY;
- for (int i = 0; i < valuesCount; ++i) {
- double value = values.valueAt(i);
- double key = Math.floor((value - offset) / interval);
- assert key >= previousKey;
- if (key == previousKey) {
- continue;
+ if (values.advanceExact(doc)) {
+ final int valuesCount = values.docValueCount();
+
+ double previousKey = Double.NEGATIVE_INFINITY;
+ for (int i = 0; i < valuesCount; ++i) {
+ double value = values.nextValue();
+ double key = Math.floor((value - offset) / interval);
+ assert key >= previousKey;
+ if (key == previousKey) {
+ continue;
+ }
+ long bucketOrd = bucketOrds.add(Double.doubleToLongBits(key));
+ if (bucketOrd < 0) { // already seen
+ bucketOrd = -1 - bucketOrd;
+ collectExistingBucket(sub, doc, bucketOrd);
+ } else {
+ collectBucket(sub, doc, bucketOrd);
+ }
+ previousKey = key;
}
- long bucketOrd = bucketOrds.add(Double.doubleToLongBits(key));
- if (bucketOrd < 0) { // already seen
- bucketOrd = -1 - bucketOrd;
- collectExistingBucket(sub, doc, bucketOrd);
- } else {
- collectBucket(sub, doc, bucketOrd);
- }
- previousKey = key;
}
}
};