private static JsonObject convertDistanceQuery(DistanceQuery query) { JsonObject distanceQuery = JsonBuilder.object() .add( "geo_distance", JsonBuilder.object() .addProperty( "distance", query.getRadius() + "km" ) .add( query.getCoordinatesField(), JsonBuilder.object() .addProperty( "lat", query.getCenter().getLatitude() ) .addProperty( "lon", query.getCenter().getLongitude() ) ) ).build(); distanceQuery = wrapQueryForNestedIfRequired( query.getCoordinatesField(), distanceQuery ); // we only implement the approximation optimization when we use the hash method as Elasticsearch // automatically optimize the geo_distance query with a bounding box filter so we don't need to do it // ourselves when we use the range method. Query approximationQuery = query.getApproximationQuery(); if ( approximationQuery instanceof SpatialHashQuery ) { distanceQuery = JsonBuilder.object() .add( "bool", JsonBuilder.object() .add( "must", distanceQuery ) .add( "filter", convertSpatialHashFilter( (SpatialHashQuery) approximationQuery ) ) ).build(); } return distanceQuery; }
private static JsonObject convertDistanceQuery(DistanceQuery query) { JsonObject distanceQuery = JsonBuilder.object() .add( "geo_distance", JsonBuilder.object() .addProperty( "distance", query.getRadius() + "km" ) .add( query.getCoordinatesField(), JsonBuilder.object() .addProperty( "lat", query.getCenter().getLatitude() ) .addProperty( "lon", query.getCenter().getLongitude() ) ) ).build(); distanceQuery = wrapQueryForNestedIfRequired( query.getCoordinatesField(), distanceQuery ); // we only implement the approximation optimization when we use the hash method as Elasticsearch // automatically optimize the geo_distance query with a bounding box filter so we don't need to do it // ourselves when we use the range method. Query approximationQuery = query.getApproximationQuery(); if ( approximationQuery instanceof SpatialHashQuery ) { distanceQuery = JsonBuilder.object() .add( "bool", JsonBuilder.object() .add( "must", distanceQuery ) .add( "filter", convertSpatialHashFilter( (SpatialHashQuery) approximationQuery ) ) ).build(); } return distanceQuery; }