File tree Expand file tree Collapse file tree 2 files changed +13
-1
lines changed
main/java/org/elasticsearch/search
test/java/org/elasticsearch/search Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -854,8 +854,13 @@ public boolean canMatch(ShardSearchRequest request) throws IOException {
854854 }
855855 }
856856
857+ /**
858+ * Returns true iff the given search source builder can be early terminated by rewriting to a match none query. Or in other words
859+ * if the execution of a the search request can be early terminated without executing it. This is for instance not possible if
860+ * a global aggregation is part of this request or if there is a suggest builder present.
861+ */
857862 public static boolean canRewriteToMatchNone (SearchSourceBuilder source ) {
858- if (source == null || source .query () == null || source .query () instanceof MatchAllQueryBuilder ) {
863+ if (source == null || source .query () == null || source .query () instanceof MatchAllQueryBuilder || source . suggest () != null ) {
859864 return false ;
860865 } else {
861866 AggregatorFactories .Builder aggregations = source .aggregations ();
Original file line number Diff line number Diff line change 5656import org .elasticsearch .search .internal .AliasFilter ;
5757import org .elasticsearch .search .internal .SearchContext ;
5858import org .elasticsearch .search .internal .ShardSearchLocalRequest ;
59+ import org .elasticsearch .search .suggest .SuggestBuilder ;
5960import org .elasticsearch .test .ESSingleNodeTestCase ;
6061
6162import java .io .IOException ;
@@ -354,5 +355,11 @@ public void testCanRewriteToMatchNone() {
354355 assertTrue (SearchService .canRewriteToMatchNone (new SearchSourceBuilder ().query (new TermQueryBuilder ("foo" , "bar" ))));
355356 assertTrue (SearchService .canRewriteToMatchNone (new SearchSourceBuilder ().query (new MatchNoneQueryBuilder ())
356357 .aggregation (new TermsAggregationBuilder ("test" , ValueType .STRING ).minDocCount (1 ))));
358+ assertFalse (SearchService .canRewriteToMatchNone (new SearchSourceBuilder ().query (new MatchNoneQueryBuilder ())
359+ .aggregation (new TermsAggregationBuilder ("test" , ValueType .STRING ).minDocCount (1 ))
360+ .suggest (new SuggestBuilder ())));
361+ assertFalse (SearchService .canRewriteToMatchNone (new SearchSourceBuilder ().query (new TermQueryBuilder ("foo" , "bar" ))
362+ .suggest (new SuggestBuilder ())));
363+
357364 }
358365}
You can’t perform that action at this time.
0 commit comments