Deprecate BoolQueryBuilder's mustNot field (#53125)
The bool query builder in elasticsearch accepts both must_not and mustNot fields. Given that leniency is abhorrent and must be eschewed, we should deprecate the latter as it doesn't fit with the style of parameters elsewhere in the DSL.
This commit is contained in:
parent
2e924e4a83
commit
c204137451
|
@ -53,8 +53,8 @@ public class BoolQueryBuilder extends AbstractQueryBuilder<BoolQueryBuilder> {
|
|||
|
||||
public static final boolean ADJUST_PURE_NEGATIVE_DEFAULT = true;
|
||||
|
||||
private static final ParseField MUSTNOT = new ParseField("mustNot"); // TODO deprecate?
|
||||
private static final ParseField MUST_NOT = new ParseField("must_not");
|
||||
private static final ParseField MUST_NOT = new ParseField("must_not")
|
||||
.withDeprecation("mustNot");
|
||||
private static final ParseField FILTER = new ParseField("filter");
|
||||
private static final ParseField SHOULD = new ParseField("should");
|
||||
private static final ParseField MUST = new ParseField("must");
|
||||
|
@ -284,8 +284,6 @@ public class BoolQueryBuilder extends AbstractQueryBuilder<BoolQueryBuilder> {
|
|||
SHOULD);
|
||||
PARSER.declareObjectArray((builder, clauses) -> clauses.forEach(builder::mustNot), (p, c) -> parseInnerQueryBuilder(p),
|
||||
MUST_NOT);
|
||||
PARSER.declareObjectArray((builder, clauses) -> clauses.forEach(builder::mustNot), (p, c) -> parseInnerQueryBuilder(p),
|
||||
MUSTNOT); // TODO should we deprecate this version?
|
||||
PARSER.declareObjectArray((builder, clauses) -> clauses.forEach(builder::filter), (p, c) -> parseInnerQueryBuilder(p),
|
||||
FILTER);
|
||||
PARSER.declareBoolean(BoolQueryBuilder::adjustPureNegative, ADJUST_PURE_NEGATIVE);
|
||||
|
|
|
@ -137,7 +137,7 @@ public class BoolQueryBuilderTests extends AbstractQueryTestCase<BoolQueryBuilde
|
|||
}
|
||||
if (tempQueryBuilder.mustNot().size() > 0) {
|
||||
QueryBuilder mustNot = tempQueryBuilder.mustNot().get(0);
|
||||
contentString += (randomBoolean() ? "\"must_not\": " : "\"mustNot\": ") + mustNot.toString() + ",";
|
||||
contentString += "\"must_not\":" + mustNot.toString() + ",";
|
||||
expectedQuery.mustNot(mustNot);
|
||||
}
|
||||
if (tempQueryBuilder.should().size() > 0) {
|
||||
|
@ -298,6 +298,14 @@ public class BoolQueryBuilderTests extends AbstractQueryTestCase<BoolQueryBuilde
|
|||
|
||||
}
|
||||
|
||||
public void testDeprecation() throws IOException {
|
||||
String query = "{\"bool\" : {\"mustNot\" : { \"match_all\" : { } } } }";
|
||||
QueryBuilder q = parseQuery(query);
|
||||
QueryBuilder expected = new BoolQueryBuilder().mustNot(new MatchAllQueryBuilder());
|
||||
assertEquals(expected, q);
|
||||
assertWarnings("Deprecated field [mustNot] used, expected [must_not] instead");
|
||||
}
|
||||
|
||||
public void testRewrite() throws IOException {
|
||||
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
|
||||
boolean mustRewrite = false;
|
||||
|
|
Loading…
Reference in New Issue