diff options
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.java | 37 |
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; } } }; |