Deprecate coerce/ignore_malformed for GeoPolygonQueryBuilder
Includes update to parsing code, tests, migration docs and reference docs.
This commit is contained in:
parent
78ff4f52d6
commit
5306de3ce3
|
@ -54,8 +54,10 @@ public class GeoPolygonQueryBuilder extends AbstractQueryBuilder<GeoPolygonQuery
|
|||
*/
|
||||
public static final boolean DEFAULT_IGNORE_UNMAPPED = false;
|
||||
|
||||
private static final ParseField COERCE_FIELD = new ParseField("coerce", "normalize");
|
||||
private static final ParseField IGNORE_MALFORMED_FIELD = new ParseField("ignore_malformed");
|
||||
private static final ParseField COERCE_FIELD = new ParseField("coerce", "normalize")
|
||||
.withAllDeprecated("use validation_method instead");
|
||||
private static final ParseField IGNORE_MALFORMED_FIELD = new ParseField("ignore_malformed")
|
||||
.withAllDeprecated("use validation_method instead");
|
||||
private static final ParseField VALIDATION_METHOD = new ParseField("validation_method");
|
||||
private static final ParseField POINTS_FIELD = new ParseField("points");
|
||||
private static final ParseField IGNORE_UNMAPPED_FIELD = new ParseField("ignore_unmapped");
|
||||
|
@ -232,9 +234,7 @@ public class GeoPolygonQueryBuilder extends AbstractQueryBuilder<GeoPolygonQuery
|
|||
builder.endArray();
|
||||
builder.endObject();
|
||||
|
||||
builder.field(COERCE_FIELD.getPreferredName(), GeoValidationMethod.isCoerce(validationMethod));
|
||||
builder.field(IGNORE_MALFORMED_FIELD.getPreferredName(),
|
||||
GeoValidationMethod.isIgnoreMalformed(validationMethod));
|
||||
builder.field(VALIDATION_METHOD.getPreferredName(), validationMethod);
|
||||
builder.field(IGNORE_UNMAPPED_FIELD.getPreferredName(), ignoreUnmapped);
|
||||
|
||||
printBoostAndQueryName(builder);
|
||||
|
|
|
@ -207,7 +207,7 @@ public class GeoPolygonQueryBuilderTests extends AbstractQueryTestCase<GeoPolygo
|
|||
parseQuery(builder.string());
|
||||
fail("normalize is deprecated");
|
||||
} catch (IllegalArgumentException ex) {
|
||||
assertEquals("Deprecated field [normalize] used, expected [coerce] instead", ex.getMessage());
|
||||
assertEquals("Deprecated field [normalize] used, replaced by [use validation_method instead]", ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -342,8 +342,7 @@ public class GeoPolygonQueryBuilderTests extends AbstractQueryTestCase<GeoPolygo
|
|||
" \"person.location\" : {\n" +
|
||||
" \"points\" : [ [ -70.0, 40.0 ], [ -80.0, 30.0 ], [ -90.0, 20.0 ], [ -70.0, 40.0 ] ]\n" +
|
||||
" },\n" +
|
||||
" \"coerce\" : false,\n" +
|
||||
" \"ignore_malformed\" : false,\n" +
|
||||
" \"validation_method\" : \"STRICT\",\n" +
|
||||
" \"ignore_unmapped\" : false,\n" +
|
||||
" \"boost\" : 1.0\n" +
|
||||
" }\n" +
|
||||
|
@ -353,6 +352,38 @@ public class GeoPolygonQueryBuilderTests extends AbstractQueryTestCase<GeoPolygo
|
|||
assertEquals(json, 4, parsed.points().size());
|
||||
}
|
||||
|
||||
public void testFromJsonIgnoreMalformedDeprecated() throws IOException {
|
||||
String json =
|
||||
"{\n" +
|
||||
" \"geo_polygon\" : {\n" +
|
||||
" \"person.location\" : {\n" +
|
||||
" \"points\" : [ [ -70.0, 40.0 ], [ -80.0, 30.0 ], [ -90.0, 20.0 ], [ -70.0, 40.0 ] ]\n" +
|
||||
" },\n" +
|
||||
" \"ignore_malformed\" : false,\n" +
|
||||
" \"boost\" : 1.0\n" +
|
||||
" }\n" +
|
||||
"}";
|
||||
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> parseQuery(json));
|
||||
assertTrue(e.getMessage().startsWith("Deprecated field "));
|
||||
|
||||
}
|
||||
|
||||
public void testFromJsonCoerceDeprecated() throws IOException {
|
||||
String json =
|
||||
"{\n" +
|
||||
" \"geo_polygon\" : {\n" +
|
||||
" \"person.location\" : {\n" +
|
||||
" \"points\" : [ [ -70.0, 40.0 ], [ -80.0, 30.0 ], [ -90.0, 20.0 ], [ -70.0, 40.0 ] ]\n" +
|
||||
" },\n" +
|
||||
" \"coerce\" : false,\n" +
|
||||
" \"ignore_unmapped\" : false,\n" +
|
||||
" \"boost\" : 1.0\n" +
|
||||
" }\n" +
|
||||
"}";
|
||||
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> parseQuery(json));
|
||||
assertTrue(e.getMessage().startsWith("Deprecated field "));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testMustRewrite() throws IOException {
|
||||
assumeTrue("test runs only when at least a type is registered", getCurrentTypes().length > 0);
|
||||
|
|
|
@ -126,6 +126,7 @@ in favour of `query` and `no_match_query`.
|
|||
|
||||
* The `exists` query will now fail if the `_field_names` field is disabled.
|
||||
|
||||
* Deprecated support for the coerce, normalize, ignore_malformed parameters in GeoPolygonQuery. Use parameter validation_method instead.
|
||||
|
||||
==== Top level `filter` parameter
|
||||
|
||||
|
|
|
@ -34,8 +34,9 @@ points. Here is an example:
|
|||
|Option |Description
|
||||
|`_name` |Optional name field to identify the filter
|
||||
|
||||
|`ignore_malformed` |Set to `true` to accept geo points with invalid latitude or
|
||||
longitude (default is `false`).
|
||||
|`validation_method` |Set to `IGNORE_MALFORMED` to accept geo points with
|
||||
invalid latitude or longitude, `COERCE` to try and infer correct latitude
|
||||
or longitude, or `STRICT` (default is `STRICT`).
|
||||
|=======================================================================
|
||||
|
||||
[float]
|
||||
|
|
Loading…
Reference in New Issue