summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/BinaryRangeAggregator.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/BinaryRangeAggregator.java')
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/BinaryRangeAggregator.java24
1 files changed, 14 insertions, 10 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/BinaryRangeAggregator.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/BinaryRangeAggregator.java
index 873eef2f71..9151ebc985 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/BinaryRangeAggregator.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/range/BinaryRangeAggregator.java
@@ -127,7 +127,7 @@ public final class BinaryRangeAggregator extends BucketsAggregator {
final LeafBucketCollector sub;
SortedSetRangeLeafCollector(SortedSetDocValues values,
- Range[] ranges, LeafBucketCollector sub) {
+ Range[] ranges, LeafBucketCollector sub) throws IOException {
super(sub, values);
for (int i = 1; i < ranges.length; ++i) {
if (RANGE_COMPARATOR.compare(ranges[i-1], ranges[i]) > 0) {
@@ -167,10 +167,13 @@ public final class BinaryRangeAggregator extends BucketsAggregator {
@Override
public void collect(int doc, long bucket) throws IOException {
- values.setDocument(doc);
- int lo = 0;
- for (long ord = values.nextOrd(); ord != SortedSetDocValues.NO_MORE_ORDS; ord = values.nextOrd()) {
- lo = collect(doc, ord, bucket, lo);
+ if (values.advanceExact(doc)) {
+ int lo = 0;
+ for (long ord = values
+ .nextOrd(); ord != SortedSetDocValues.NO_MORE_ORDS; ord = values
+ .nextOrd()) {
+ lo = collect(doc, ord, bucket, lo);
+ }
}
}
@@ -259,11 +262,12 @@ public final class BinaryRangeAggregator extends BucketsAggregator {
@Override
public void collect(int doc, long bucket) throws IOException {
- values.setDocument(doc);
- final int valuesCount = values.count();
- for (int i = 0, lo = 0; i < valuesCount; ++i) {
- final BytesRef value = values.valueAt(i);
- lo = collect(doc, value, bucket, lo);
+ if (values.advanceExact(doc)) {
+ final int valuesCount = values.docValueCount();
+ for (int i = 0, lo = 0; i < valuesCount; ++i) {
+ final BytesRef value = values.nextValue();
+ lo = collect(doc, value, bucket, lo);
+ }
}
}