@@ -56,6 +56,8 @@ public class WildcardQueryBuilder extends AbstractQueryBuilder<WildcardQueryBuil
5656 private static final ParseField CASE_INSENSITIVE_FIELD = new ParseField ("case_insensitive" );
5757 private boolean caseInsensitive = DEFAULT_CASE_INSENSITIVITY ;
5858
59+ private boolean isForESQL ;
60+
5961 /**
6062 * Implements the wildcard search query. Supported wildcards are {@code *}, which
6163 * matches any character sequence (including the empty one), and {@code ?},
@@ -78,6 +80,10 @@ public WildcardQueryBuilder(String fieldName, String value) {
7880 this .value = value ;
7981 }
8082
83+ public WildcardQueryBuilder (String fieldName , String value , boolean isForESQL ){
84+ this (fieldName , value );
85+ this .isForESQL = isForESQL ;
86+ }
8187 /**
8288 * Read from a stream.
8389 */
@@ -87,6 +93,11 @@ public WildcardQueryBuilder(StreamInput in) throws IOException {
8793 value = in .readString ();
8894 rewrite = in .readOptionalString ();
8995 caseInsensitive = in .readBoolean ();
96+ if (in .getTransportVersion ().onOrAfter (TransportVersions .ESQL_FIXED_INDEX_LIKE )){
97+ isForESQL = in .readBoolean ();
98+ } else {
99+ isForESQL = false ;
100+ }
90101 }
91102
92103 @ Override
@@ -95,6 +106,9 @@ protected void doWriteTo(StreamOutput out) throws IOException {
95106 out .writeString (value );
96107 out .writeOptionalString (rewrite );
97108 out .writeBoolean (caseInsensitive );
109+ if (out .getTransportVersion ().onOrAfter (TransportVersions .ESQL_FIXED_INDEX_LIKE )){
110+ out .writeBoolean (isForESQL );
111+ }
98112 }
99113
100114 @ Override
@@ -218,7 +232,12 @@ private QueryBuilder maybeRewriteBasedOnConstantFields(@Nullable MappedFieldType
218232 // This logic is correct for all field types, but by only applying it to constant
219233 // fields we also have the guarantee that it doesn't perform I/O, which is important
220234 // since rewrites might happen on a network thread.
221- Query query = constantFieldType .wildcardQuery (value , caseInsensitive , context ); // the rewrite method doesn't matter
235+ Query query ;
236+ if (isForESQL ) {
237+ query = constantFieldType .wildcardLikeQuery (value , caseInsensitive , context ); // the rewrite method doesn't matter
238+ } else {
239+ query = constantFieldType .wildcardQuery (value , caseInsensitive , context ); // the rewrite method doesn't matter
240+ }
222241 if (query instanceof MatchAllDocsQuery ) {
223242 return new MatchAllQueryBuilder ();
224243 } else if (query instanceof MatchNoDocsQuery ) {
0 commit comments