summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregator.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregator.java')
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregator.java67
1 files changed, 34 insertions, 33 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregator.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregator.java
index 2083ea570d..5c0cb4ba60 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregator.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/geobounds/GeoBoundsAggregator.java
@@ -102,41 +102,42 @@ public final class GeoBoundsAggregator extends MetricsAggregator {
negRights.fill(from, negRights.size(), Double.NEGATIVE_INFINITY);
}
- values.setDocument(doc);
- final int valuesCount = values.count();
+ if (values.advanceExact(doc)) {
+ final int valuesCount = values.docValueCount();
- for (int i = 0; i < valuesCount; ++i) {
- GeoPoint value = values.valueAt(i);
- double top = tops.get(bucket);
- if (value.lat() > top) {
- top = value.lat();
+ for (int i = 0; i < valuesCount; ++i) {
+ GeoPoint value = values.nextValue();
+ double top = tops.get(bucket);
+ if (value.lat() > top) {
+ top = value.lat();
+ }
+ double bottom = bottoms.get(bucket);
+ if (value.lat() < bottom) {
+ bottom = value.lat();
+ }
+ double posLeft = posLefts.get(bucket);
+ if (value.lon() >= 0 && value.lon() < posLeft) {
+ posLeft = value.lon();
+ }
+ double posRight = posRights.get(bucket);
+ if (value.lon() >= 0 && value.lon() > posRight) {
+ posRight = value.lon();
+ }
+ double negLeft = negLefts.get(bucket);
+ if (value.lon() < 0 && value.lon() < negLeft) {
+ negLeft = value.lon();
+ }
+ double negRight = negRights.get(bucket);
+ if (value.lon() < 0 && value.lon() > negRight) {
+ negRight = value.lon();
+ }
+ tops.set(bucket, top);
+ bottoms.set(bucket, bottom);
+ posLefts.set(bucket, posLeft);
+ posRights.set(bucket, posRight);
+ negLefts.set(bucket, negLeft);
+ negRights.set(bucket, negRight);
}
- double bottom = bottoms.get(bucket);
- if (value.lat() < bottom) {
- bottom = value.lat();
- }
- double posLeft = posLefts.get(bucket);
- if (value.lon() >= 0 && value.lon() < posLeft) {
- posLeft = value.lon();
- }
- double posRight = posRights.get(bucket);
- if (value.lon() >= 0 && value.lon() > posRight) {
- posRight = value.lon();
- }
- double negLeft = negLefts.get(bucket);
- if (value.lon() < 0 && value.lon() < negLeft) {
- negLeft = value.lon();
- }
- double negRight = negRights.get(bucket);
- if (value.lon() < 0 && value.lon() > negRight) {
- negRight = value.lon();
- }
- tops.set(bucket, top);
- bottoms.set(bucket, bottom);
- posLefts.set(bucket, posLeft);
- posRights.set(bucket, posRight);
- negLefts.set(bucket, negLeft);
- negRights.set(bucket, negRight);
}
}
};