2121import org .elasticsearch .index .mapper .ParsedDocument ;
2222import org .elasticsearch .index .query .BoolQueryBuilder ;
2323import org .elasticsearch .index .query .MatchQueryBuilder ;
24- import org .elasticsearch .index .query .MultiMatchQueryBuilder ;
24+ import org .elasticsearch .index .query .MultiFieldMatchQueryBuilder ;
2525import org .elasticsearch .index .query .Operator ;
2626import org .elasticsearch .index .query .QueryBuilder ;
2727import org .elasticsearch .index .query .QueryStringQueryBuilder ;
2828import org .elasticsearch .index .query .RangeQueryBuilder ;
2929import org .elasticsearch .index .query .SearchExecutionContext ;
30+ import org .elasticsearch .index .query .ZeroTermsQueryOption ;
3031import org .elasticsearch .license .XPackLicenseState ;
3132import org .elasticsearch .search .vectors .KnnVectorQueryBuilder ;
3233import org .elasticsearch .search .vectors .RescoreVectorBuilder ;
@@ -1221,7 +1222,7 @@ private void checkMatchFunctionPushDown(
12211222 var fieldExtract = as (project .child (), FieldExtractExec .class );
12221223 var actualLuceneQuery = as (fieldExtract .child (), EsQueryExec .class ).query ();
12231224
1224- var expectedLuceneQuery = new MatchQueryBuilder (fieldName , expectedValueProvider .apply (queryValue )). lenient ( true ) ;
1225+ var expectedLuceneQuery = new MatchQueryBuilder (fieldName , expectedValueProvider .apply (queryValue ));
12251226 assertThat ("Unexpected match query for data type " + fieldDataType , actualLuceneQuery , equalTo (expectedLuceneQuery ));
12261227 } catch (ParsingException e ) {
12271228 fail ("Error parsing ESQL query: " + esqlQuery + "\n " + e .getMessage ());
@@ -1287,8 +1288,7 @@ public void testMatchOptionsPushDown() {
12871288 .boost (2.1f )
12881289 .minimumShouldMatch ("2" )
12891290 .operator (Operator .AND )
1290- .prefixLength (3 )
1291- .lenient (true );
1291+ .prefixLength (3 );
12921292 assertThat (actualLuceneQuery .toString (), is (expectedLuceneQuery .toString ()));
12931293 }
12941294
@@ -1332,31 +1332,20 @@ public void testQStrOptionsPushDown() {
13321332 public void testMultiMatchOptionsPushDown () {
13331333 String query = """
13341334 from test
1335- | where MATCH(first_name, last_name, "Anna", {"fuzzy_rewrite": "constant_score", "slop": 10, "analyzer": "auto",
1336- "auto_generate_synonyms_phrase_query": "false", "fuzziness": "auto", "fuzzy_transpositions": false, "lenient": "false",
1337- "max_expansions": 10, "minimum_should_match": 3, "operator": "AND", "prefix_length": 20, "tie_breaker": 1.0,
1338- "type": "best_fields", "boost": 2.0})
1335+ | where MATCH(first_name, last_name, "Anna", {"auto_generate_synonyms_phrase_query": "false",
1336+ "minimum_should_match": 3, "operator": "AND", "boost": 2.0, "zero_terms_query": "none"})
13391337 """ ;
13401338 var plan = plannerOptimizer .plan (query );
13411339
13421340 AtomicReference <String > planStr = new AtomicReference <>();
13431341 plan .forEachDown (EsQueryExec .class , result -> planStr .set (result .query ().toString ()));
13441342
1345- var expectedQuery = new MultiMatchQueryBuilder ("Anna" ).fields (Map .of ("first_name" , 1.0f , "last_name" , 1.0f ))
1346- .slop (10 )
1343+ var expectedQuery = MultiFieldMatchQueryBuilder .create ("Anna" , "first_name" , "last_name" )
13471344 .boost (2.0f )
1348- .analyzer ("auto" )
13491345 .autoGenerateSynonymsPhraseQuery (false )
13501346 .operator (Operator .fromString ("AND" ))
1351- .fuzziness (Fuzziness .fromString ("auto" ))
1352- .fuzzyRewrite ("constant_score" )
1353- .fuzzyTranspositions (false )
1354- .lenient (false )
1355- .type ("best_fields" )
1356- .maxExpansions (10 )
1357- .minimumShouldMatch ("3" )
1358- .prefixLength (20 )
1359- .tieBreaker (1.0f );
1347+ .zeroTermsQuery (ZeroTermsQueryOption .readFromString ("none" ))
1348+ .minimumShouldMatch ("3" );
13601349 assertThat (expectedQuery .toString (), is (planStr .get ()));
13611350 }
13621351
@@ -1960,7 +1949,7 @@ public void testMatchFunctionWithStatsWherePushable() {
19601949 var agg = as (limit .child (), AggregateExec .class );
19611950 var exchange = as (agg .child (), ExchangeExec .class );
19621951 var stats = as (exchange .child (), EsStatsQueryExec .class );
1963- QueryBuilder expected = new MatchQueryBuilder ("last_name" , "Smith" ). lenient ( true ) ;
1952+ QueryBuilder expected = new MatchQueryBuilder ("last_name" , "Smith" );
19641953 assertThat (stats .query ().toString (), equalTo (expected .toString ()));
19651954 }
19661955
@@ -1980,7 +1969,7 @@ public void testMatchFunctionWithStatsPushableAndNonPushableCondition() {
19801969 assertTrue (filter .condition () instanceof GreaterThan );
19811970 var fieldExtract = as (filter .child (), FieldExtractExec .class );
19821971 var esQuery = as (fieldExtract .child (), EsQueryExec .class );
1983- QueryBuilder expected = new MatchQueryBuilder ("last_name" , "Smith" ). lenient ( true ) ;
1972+ QueryBuilder expected = new MatchQueryBuilder ("last_name" , "Smith" );
19841973 assertThat (esQuery .query ().toString (), equalTo (expected .toString ()));
19851974 }
19861975
@@ -2130,7 +2119,7 @@ private class MatchFunctionTestCase extends FullTextFunctionTestCase {
21302119
21312120 @ Override
21322121 public QueryBuilder queryBuilder () {
2133- return new MatchQueryBuilder (fieldName (), queryString ()). lenient ( true ) ;
2122+ return new MatchQueryBuilder (fieldName (), queryString ());
21342123 }
21352124
21362125 @ Override
@@ -2146,7 +2135,7 @@ private class MatchOperatorTestCase extends FullTextFunctionTestCase {
21462135
21472136 @ Override
21482137 public QueryBuilder queryBuilder () {
2149- return new MatchQueryBuilder (fieldName (), queryString ()). lenient ( true ) ;
2138+ return new MatchQueryBuilder (fieldName (), queryString ());
21502139 }
21512140
21522141 @ Override
0 commit comments