mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-09 14:34:43 +00:00
GeoDistanceRangeQueryBuilder to not change its state when calling toQuery
The geoPoint gets normalized while calling toQuery. That should happen on a copy of the point though, the state of the request should never change as part of toQuery execution. Also updated corresponding test to support point normalization. Closes #13984
This commit is contained in:
parent
a024125f8d
commit
53f316b540
@ -221,6 +221,7 @@ public class GeoDistanceRangeQueryBuilder extends AbstractQueryBuilder<GeoDistan
|
||||
}
|
||||
}
|
||||
|
||||
GeoPoint point = new GeoPoint(this.point);
|
||||
if (GeoValidationMethod.isCoerce(validationMethod)) {
|
||||
GeoUtils.normalizePoint(point, true, true);
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ package org.elasticsearch.index.query;
|
||||
import org.apache.lucene.search.Query;
|
||||
import org.elasticsearch.common.geo.GeoDistance;
|
||||
import org.elasticsearch.common.geo.GeoPoint;
|
||||
import org.elasticsearch.common.geo.GeoUtils;
|
||||
import org.elasticsearch.common.unit.DistanceUnit;
|
||||
import org.elasticsearch.index.search.geo.GeoDistanceRangeQuery;
|
||||
import org.junit.Test;
|
||||
@ -108,8 +109,12 @@ public class GeoDistanceRangeQueryTests extends AbstractQueryTestCase<GeoDistanc
|
||||
GeoDistanceRangeQuery geoQuery = (GeoDistanceRangeQuery) query;
|
||||
assertThat(geoQuery.fieldName(), equalTo(queryBuilder.fieldName()));
|
||||
if (queryBuilder.point() != null) {
|
||||
assertThat(geoQuery.lat(), equalTo(queryBuilder.point().lat()));
|
||||
assertThat(geoQuery.lon(), equalTo(queryBuilder.point().lon()));
|
||||
GeoPoint expectedPoint = new GeoPoint(queryBuilder.point());
|
||||
if (GeoValidationMethod.isCoerce(queryBuilder.getValidationMethod())) {
|
||||
GeoUtils.normalizePoint(expectedPoint, true, true);
|
||||
}
|
||||
assertThat(geoQuery.lat(), equalTo(expectedPoint.lat()));
|
||||
assertThat(geoQuery.lon(), equalTo(expectedPoint.lon()));
|
||||
}
|
||||
assertThat(geoQuery.geoDistance(), equalTo(queryBuilder.geoDistance()));
|
||||
if (queryBuilder.from() != null && queryBuilder.from() instanceof Number) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user