File tree Expand file tree Collapse file tree 3 files changed +12
-0
lines changed
main/java/org/elasticsearch/index/query
test/java/org/elasticsearch/index/query Expand file tree Collapse file tree 3 files changed +12
-0
lines changed Original file line number Diff line number Diff line change 1+ pr : 115031
2+ summary : Bool query early termination should also consider `must_not` clauses
3+ area : Search
4+ type : enhancement
5+ issues : []
Original file line number Diff line number Diff line change @@ -356,6 +356,7 @@ protected QueryBuilder doRewrite(QueryRewriteContext queryRewriteContext) throws
356356 if (mustClauses .size () == 0
357357 && filterClauses .size () == 0
358358 && shouldClauses .size () > 0
359+ && mustNotClauses .size () == 0
359360 && newBuilder .shouldClauses .stream ().allMatch (b -> b instanceof MatchNoneQueryBuilder )) {
360361 return new MatchNoneQueryBuilder ("The \" " + getName () + "\" query was rewritten to a \" match_none\" query." );
361362 }
Original file line number Diff line number Diff line change @@ -449,6 +449,12 @@ public void testRewriteWithMatchNone() throws IOException {
449449 rewritten = Rewriteable .rewrite (boolQueryBuilder , createSearchExecutionContext ());
450450 assertNotEquals (new MatchNoneQueryBuilder (), rewritten );
451451
452+ boolQueryBuilder = new BoolQueryBuilder ();
453+ boolQueryBuilder .should (new WrapperQueryBuilder (new MatchNoneQueryBuilder ().toString ()));
454+ boolQueryBuilder .mustNot (new TermQueryBuilder (TEXT_FIELD_NAME , "bar" ));
455+ rewritten = Rewriteable .rewrite (boolQueryBuilder , createSearchExecutionContext ());
456+ assertNotEquals (new MatchNoneQueryBuilder (), rewritten );
457+
452458 boolQueryBuilder = new BoolQueryBuilder ();
453459 boolQueryBuilder .filter (new TermQueryBuilder (TEXT_FIELD_NAME , "bar" ));
454460 boolQueryBuilder .mustNot (new WrapperQueryBuilder (new WrapperQueryBuilder (new MatchAllQueryBuilder ().toString ()).toString ()));
You can’t perform that action at this time.
0 commit comments