Skip to content

Commit 6c51ef5

Browse files
Test change
1 parent ffc27d6 commit 6c51ef5

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

server/src/main/java/org/elasticsearch/index/mapper/IndexFieldMapper.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
package org.elasticsearch.index.mapper;
1111

1212
import org.apache.lucene.search.MatchAllDocsQuery;
13-
import org.apache.lucene.search.MatchNoDocsQuery;
1413
import org.apache.lucene.search.Query;
1514
import org.apache.lucene.util.BytesRef;
1615
import org.elasticsearch.common.Strings;
17-
import org.elasticsearch.common.regex.Regex;
1816
import org.elasticsearch.index.fielddata.FieldData;
1917
import org.elasticsearch.index.fielddata.FieldDataContext;
2018
import org.elasticsearch.index.fielddata.IndexFieldData;
@@ -29,7 +27,6 @@
2927

3028
import java.util.Collections;
3129
import java.util.List;
32-
import java.util.Locale;
3330

3431
public class IndexFieldMapper extends MetadataFieldMapper {
3532

@@ -104,7 +101,7 @@ public StoredFieldsSpec storedFieldsSpec() {
104101
}
105102
};
106103
}
107-
104+
/*
108105
@Override
109106
public Query wildcardQuery(String value, boolean caseInsensitive, QueryRewriteContext context) {
110107
String indexName = context.getFullyQualifiedIndex().getName();
@@ -117,6 +114,7 @@ public Query wildcardQuery(String value, boolean caseInsensitive, QueryRewriteCo
117114
}
118115
return new MatchNoDocsQuery();
119116
}
117+
*/
120118

121119
}
122120

server/src/main/java/org/elasticsearch/index/query/WildcardQueryBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ protected QueryBuilder doCoordinatorRewrite(CoordinatorRewriteContext coordinato
213213
return maybeRewriteBasedOnConstantFields(fieldType, coordinatorRewriteContext);
214214
}
215215

216-
private QueryBuilder maybeRewriteBasedOnConstantFields(@Nullable MappedFieldType fieldType, QueryRewriteContext context) {
216+
protected QueryBuilder maybeRewriteBasedOnConstantFields(@Nullable MappedFieldType fieldType, QueryRewriteContext context) {
217217
if (fieldType instanceof ConstantFieldType constantFieldType) {
218218
// This logic is correct for all field types, but by only applying it to constant
219219
// fields we also have the guarantee that it doesn't perform I/O, which is important

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/WildcardQuery.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,21 @@
66
*/
77
package org.elasticsearch.xpack.esql.core.querydsl.query;
88

9+
import org.apache.lucene.search.MatchAllDocsQuery;
10+
import org.apache.lucene.search.MatchNoDocsQuery;
11+
import org.elasticsearch.common.regex.Regex;
12+
import org.elasticsearch.core.Nullable;
13+
import org.elasticsearch.index.mapper.IndexFieldMapper;
14+
import org.elasticsearch.index.mapper.MappedFieldType;
15+
import org.elasticsearch.index.query.CoordinatorRewriteContext;
16+
import org.elasticsearch.index.query.MatchAllQueryBuilder;
17+
import org.elasticsearch.index.query.MatchNoneQueryBuilder;
918
import org.elasticsearch.index.query.QueryBuilder;
19+
import org.elasticsearch.index.query.QueryRewriteContext;
1020
import org.elasticsearch.index.query.WildcardQueryBuilder;
1121
import org.elasticsearch.xpack.esql.core.tree.Source;
1222

23+
import java.util.Locale;
1324
import java.util.Objects;
1425

1526
import static org.elasticsearch.index.query.QueryBuilders.wildcardQuery;
@@ -44,7 +55,24 @@ public Boolean caseInsensitive() {
4455

4556
@Override
4657
protected QueryBuilder asBuilder() {
47-
WildcardQueryBuilder wb = wildcardQuery(field, query);
58+
WildcardQueryBuilder wb = new WildcardQueryBuilder(field, query) {
59+
@Override
60+
protected QueryBuilder maybeRewriteBasedOnConstantFields(@Nullable MappedFieldType fieldType, QueryRewriteContext context) {
61+
if (fieldType instanceof IndexFieldMapper.IndexFieldType) {
62+
String value = value();
63+
String indexName = context.getFullyQualifiedIndex().getName();
64+
if (WildcardQuery.this.caseInsensitive) {
65+
value = value.toLowerCase(Locale.ROOT);
66+
indexName = indexName.toLowerCase(Locale.ROOT);
67+
}
68+
if (Regex.simpleMatch(value, indexName)) {
69+
return new MatchAllQueryBuilder();
70+
}
71+
return new MatchNoneQueryBuilder("The \"" + getName() + "\" query was rewritten to a \"match_none\" query.");
72+
}
73+
return super.maybeRewriteBasedOnConstantFields(fieldType, context);
74+
}
75+
};
4876
// ES does not allow case_insensitive to be set to "false", it should be either "true" or not specified
4977
return caseInsensitive == false ? wb : wb.caseInsensitive(caseInsensitive);
5078
}

0 commit comments

Comments
 (0)