Skip to content

Commit 4b3d240

Browse files
Initial commit
1 parent c4f4b39 commit 4b3d240

File tree

9 files changed

+447
-95
lines changed

9 files changed

+447
-95
lines changed

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

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -61,30 +61,32 @@ public final class QueryStringQueryBuilder extends AbstractQueryBuilder<QueryStr
6161
public static final MultiMatchQueryBuilder.Type DEFAULT_TYPE = MultiMatchQueryBuilder.Type.BEST_FIELDS;
6262
public static final boolean DEFAULT_FUZZY_TRANSPOSITIONS = FuzzyQuery.defaultTranspositions;
6363

64-
private static final ParseField QUERY_FIELD = new ParseField("query");
65-
private static final ParseField FIELDS_FIELD = new ParseField("fields");
66-
private static final ParseField DEFAULT_FIELD_FIELD = new ParseField("default_field");
67-
private static final ParseField DEFAULT_OPERATOR_FIELD = new ParseField("default_operator");
68-
private static final ParseField ANALYZER_FIELD = new ParseField("analyzer");
69-
private static final ParseField QUOTE_ANALYZER_FIELD = new ParseField("quote_analyzer");
70-
private static final ParseField ALLOW_LEADING_WILDCARD_FIELD = new ParseField("allow_leading_wildcard");
71-
private static final ParseField MAX_DETERMINIZED_STATES_FIELD = new ParseField("max_determinized_states");
72-
private static final ParseField ENABLE_POSITION_INCREMENTS_FIELD = new ParseField("enable_position_increments");
73-
private static final ParseField ESCAPE_FIELD = new ParseField("escape");
74-
private static final ParseField FUZZY_PREFIX_LENGTH_FIELD = new ParseField("fuzzy_prefix_length");
75-
private static final ParseField FUZZY_MAX_EXPANSIONS_FIELD = new ParseField("fuzzy_max_expansions");
76-
private static final ParseField FUZZY_REWRITE_FIELD = new ParseField("fuzzy_rewrite");
77-
private static final ParseField PHRASE_SLOP_FIELD = new ParseField("phrase_slop");
78-
private static final ParseField TIE_BREAKER_FIELD = new ParseField("tie_breaker");
79-
private static final ParseField ANALYZE_WILDCARD_FIELD = new ParseField("analyze_wildcard");
80-
private static final ParseField REWRITE_FIELD = new ParseField("rewrite");
81-
private static final ParseField MINIMUM_SHOULD_MATCH_FIELD = new ParseField("minimum_should_match");
82-
private static final ParseField QUOTE_FIELD_SUFFIX_FIELD = new ParseField("quote_field_suffix");
83-
private static final ParseField LENIENT_FIELD = new ParseField("lenient");
84-
private static final ParseField TIME_ZONE_FIELD = new ParseField("time_zone");
85-
private static final ParseField TYPE_FIELD = new ParseField("type");
86-
private static final ParseField GENERATE_SYNONYMS_PHRASE_QUERY = new ParseField("auto_generate_synonyms_phrase_query");
87-
private static final ParseField FUZZY_TRANSPOSITIONS_FIELD = new ParseField("fuzzy_transpositions");
64+
public static final ParseField QUERY_FIELD = new ParseField("query");
65+
public static final ParseField BOOST_FIELD = new ParseField("boost");
66+
public static final ParseField FIELDS_FIELD = new ParseField("fields");
67+
public static final ParseField DEFAULT_FIELD_FIELD = new ParseField("default_field");
68+
public static final ParseField DEFAULT_OPERATOR_FIELD = new ParseField("default_operator");
69+
public static final ParseField ANALYZER_FIELD = new ParseField("analyzer");
70+
public static final ParseField QUOTE_ANALYZER_FIELD = new ParseField("quote_analyzer");
71+
public static final ParseField ALLOW_LEADING_WILDCARD_FIELD = new ParseField("allow_leading_wildcard");
72+
public static final ParseField MAX_DETERMINIZED_STATES_FIELD = new ParseField("max_determinized_states");
73+
public static final ParseField ENABLE_POSITION_INCREMENTS_FIELD = new ParseField("enable_position_increments");
74+
public static final ParseField ESCAPE_FIELD = new ParseField("escape");
75+
public static final ParseField FUZZINESS_FIELD = new ParseField("fuzziness");
76+
public static final ParseField FUZZY_PREFIX_LENGTH_FIELD = new ParseField("fuzzy_prefix_length");
77+
public static final ParseField FUZZY_MAX_EXPANSIONS_FIELD = new ParseField("fuzzy_max_expansions");
78+
public static final ParseField FUZZY_REWRITE_FIELD = new ParseField("fuzzy_rewrite");
79+
public static final ParseField PHRASE_SLOP_FIELD = new ParseField("phrase_slop");
80+
public static final ParseField TIE_BREAKER_FIELD = new ParseField("tie_breaker");
81+
public static final ParseField ANALYZE_WILDCARD_FIELD = new ParseField("analyze_wildcard");
82+
public static final ParseField REWRITE_FIELD = new ParseField("rewrite");
83+
public static final ParseField MINIMUM_SHOULD_MATCH_FIELD = new ParseField("minimum_should_match");
84+
public static final ParseField QUOTE_FIELD_SUFFIX_FIELD = new ParseField("quote_field_suffix");
85+
public static final ParseField LENIENT_FIELD = new ParseField("lenient");
86+
public static final ParseField TIME_ZONE_FIELD = new ParseField("time_zone");
87+
public static final ParseField TYPE_FIELD = new ParseField("type");
88+
public static final ParseField GENERATE_SYNONYMS_PHRASE_QUERY = new ParseField("auto_generate_synonyms_phrase_query");
89+
public static final ParseField FUZZY_TRANSPOSITIONS_FIELD = new ParseField("fuzzy_transpositions");
8890

8991
private final String queryString;
9092

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

Lines changed: 52 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
import org.elasticsearch.common.unit.Fuzziness;
1010
import org.elasticsearch.common.xcontent.LoggingDeprecationHandler;
11-
import org.elasticsearch.core.Booleans;
1211
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
1312
import org.elasticsearch.index.query.Operator;
1413
import org.elasticsearch.index.query.QueryBuilder;
@@ -22,41 +21,66 @@
2221
import java.util.function.BiConsumer;
2322

2423
import static java.util.Map.entry;
24+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.ALLOW_LEADING_WILDCARD_FIELD;
25+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.ANALYZER_FIELD;
26+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.ANALYZE_WILDCARD_FIELD;
27+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.DEFAULT_FIELD_FIELD;
28+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.DEFAULT_OPERATOR_FIELD;
29+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.ENABLE_POSITION_INCREMENTS_FIELD;
30+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.ESCAPE_FIELD;
31+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.FUZZINESS_FIELD;
32+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.FUZZY_MAX_EXPANSIONS_FIELD;
33+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.FUZZY_PREFIX_LENGTH_FIELD;
34+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.FUZZY_REWRITE_FIELD;
35+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.FUZZY_TRANSPOSITIONS_FIELD;
36+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.GENERATE_SYNONYMS_PHRASE_QUERY;
37+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.LENIENT_FIELD;
38+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.MAX_DETERMINIZED_STATES_FIELD;
39+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.MINIMUM_SHOULD_MATCH_FIELD;
40+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.PHRASE_SLOP_FIELD;
41+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.QUOTE_ANALYZER_FIELD;
42+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.QUOTE_FIELD_SUFFIX_FIELD;
43+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.REWRITE_FIELD;
44+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.TIE_BREAKER_FIELD;
45+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.TIME_ZONE_FIELD;
46+
import static org.elasticsearch.index.query.QueryStringQueryBuilder.TYPE_FIELD;
2547

2648
public class QueryStringQuery extends Query {
2749

28-
// TODO: it'd be great if these could be constants instead of Strings, needs a core change to make the fields public first
29-
private static final Map<String, BiConsumer<QueryStringQueryBuilder, String>> BUILDER_APPLIERS = Map.ofEntries(
30-
entry("allow_leading_wildcard", (qb, s) -> qb.allowLeadingWildcard(Booleans.parseBoolean(s))),
31-
entry("analyze_wildcard", (qb, s) -> qb.analyzeWildcard(Booleans.parseBoolean(s))),
32-
entry("analyzer", QueryStringQueryBuilder::analyzer),
33-
entry("auto_generate_synonyms_phrase_query", (qb, s) -> qb.autoGenerateSynonymsPhraseQuery(Booleans.parseBoolean(s))),
34-
entry("default_field", QueryStringQueryBuilder::defaultField),
35-
entry("default_operator", (qb, s) -> qb.defaultOperator(Operator.fromString(s))),
36-
entry("enable_position_increments", (qb, s) -> qb.enablePositionIncrements(Booleans.parseBoolean(s))),
37-
entry("escape", (qb, s) -> qb.escape(Booleans.parseBoolean(s))),
38-
entry("fuzziness", (qb, s) -> qb.fuzziness(Fuzziness.fromString(s))),
39-
entry("fuzzy_max_expansions", (qb, s) -> qb.fuzzyMaxExpansions(Integer.valueOf(s))),
40-
entry("fuzzy_prefix_length", (qb, s) -> qb.fuzzyPrefixLength(Integer.valueOf(s))),
41-
entry("fuzzy_rewrite", QueryStringQueryBuilder::fuzzyRewrite),
42-
entry("fuzzy_transpositions", (qb, s) -> qb.fuzzyTranspositions(Booleans.parseBoolean(s))),
43-
entry("lenient", (qb, s) -> qb.lenient(Booleans.parseBoolean(s))),
44-
entry("max_determinized_states", (qb, s) -> qb.maxDeterminizedStates(Integer.valueOf(s))),
45-
entry("minimum_should_match", QueryStringQueryBuilder::minimumShouldMatch),
46-
entry("phrase_slop", (qb, s) -> qb.phraseSlop(Integer.valueOf(s))),
47-
entry("rewrite", QueryStringQueryBuilder::rewrite),
48-
entry("quote_analyzer", QueryStringQueryBuilder::quoteAnalyzer),
49-
entry("quote_field_suffix", QueryStringQueryBuilder::quoteFieldSuffix),
50-
entry("tie_breaker", (qb, s) -> qb.tieBreaker(Float.valueOf(s))),
51-
entry("time_zone", QueryStringQueryBuilder::timeZone),
52-
entry("type", (qb, s) -> qb.type(MultiMatchQueryBuilder.Type.parse(s, LoggingDeprecationHandler.INSTANCE)))
50+
private static final Map<String, BiConsumer<QueryStringQueryBuilder, Object>> BUILDER_APPLIERS = Map.ofEntries(
51+
entry(ALLOW_LEADING_WILDCARD_FIELD.getPreferredName(), (qb, obj) -> qb.allowLeadingWildcard((Boolean) obj)),
52+
entry(ANALYZE_WILDCARD_FIELD.getPreferredName(), (qb, obj) -> qb.analyzeWildcard((Boolean) obj)),
53+
entry(ANALYZER_FIELD.getPreferredName(), (qb, obj) -> qb.analyzer((String) obj)),
54+
entry(GENERATE_SYNONYMS_PHRASE_QUERY.getPreferredName(), (qb, obj) -> qb.autoGenerateSynonymsPhraseQuery((Boolean) obj)),
55+
entry(DEFAULT_FIELD_FIELD.getPreferredName(), (qb, obj) -> qb.defaultField((String) obj)),
56+
entry(DEFAULT_OPERATOR_FIELD.getPreferredName(), (qb, obj) -> qb.defaultOperator(Operator.fromString((String) obj))),
57+
entry(ENABLE_POSITION_INCREMENTS_FIELD.getPreferredName(), (qb, obj) -> qb.enablePositionIncrements((Boolean) obj)),
58+
entry(ESCAPE_FIELD.getPreferredName(), (qb, obj) -> qb.escape((Boolean) obj)),
59+
entry(FUZZINESS_FIELD.getPreferredName(), (qb, obj) -> qb.fuzziness(Fuzziness.fromString((String) obj))),
60+
entry(FUZZY_MAX_EXPANSIONS_FIELD.getPreferredName(), (qb, obj) -> qb.fuzzyMaxExpansions((Integer) obj)),
61+
entry(FUZZY_PREFIX_LENGTH_FIELD.getPreferredName(), (qb, obj) -> qb.fuzzyPrefixLength((Integer) obj)),
62+
entry(FUZZY_REWRITE_FIELD.getPreferredName(), (qb, obj) -> qb.fuzzyRewrite((String) obj)),
63+
entry(FUZZY_TRANSPOSITIONS_FIELD.getPreferredName(), (qb, obj) -> qb.fuzzyTranspositions((Boolean) obj)),
64+
entry(LENIENT_FIELD.getPreferredName(), (qb, obj) -> qb.lenient((Boolean) obj)),
65+
entry(MAX_DETERMINIZED_STATES_FIELD.getPreferredName(), (qb, obj) -> qb.maxDeterminizedStates((Integer) obj)),
66+
entry(MINIMUM_SHOULD_MATCH_FIELD.getPreferredName(), (qb, obj) -> qb.minimumShouldMatch((String) obj)),
67+
entry(PHRASE_SLOP_FIELD.getPreferredName(), (qb, obj) -> qb.phraseSlop((Integer) obj)),
68+
entry(REWRITE_FIELD.getPreferredName(), (qb, obj) -> qb.rewrite((String) obj)),
69+
entry(QUOTE_ANALYZER_FIELD.getPreferredName(), (qb, obj) -> qb.quoteAnalyzer((String) obj)),
70+
entry(QUOTE_FIELD_SUFFIX_FIELD.getPreferredName(), (qb, obj) -> qb.quoteFieldSuffix((String) obj)),
71+
entry(TIE_BREAKER_FIELD.getPreferredName(), (qb, obj) -> qb.tieBreaker((Float) obj)),
72+
entry(TIME_ZONE_FIELD.getPreferredName(), (qb, obj) -> qb.timeZone((String) obj)),
73+
entry(
74+
TYPE_FIELD.getPreferredName(),
75+
(qb, obj) -> qb.type(MultiMatchQueryBuilder.Type.parse((String) obj, LoggingDeprecationHandler.INSTANCE))
76+
)
5377
);
5478

5579
private final String query;
5680
private final Map<String, Float> fields;
57-
private final Map<String, String> options;
81+
private final Map<String, Object> options;
5882

59-
public QueryStringQuery(Source source, String query, Map<String, Float> fields, Map<String, String> options) {
83+
public QueryStringQuery(Source source, String query, Map<String, Float> fields, Map<String, Object> options) {
6084
super(source);
6185
this.query = query;
6286
this.fields = fields;

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/EsqlFunctionRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ private static FunctionDefinition[][] functions() {
434434
new FunctionDefinition[] {
435435
def(Kql.class, uni(Kql::new), "kql"),
436436
def(Match.class, tri(Match::new), "match"),
437-
def(QueryString.class, uni(QueryString::new), "qstr") } };
437+
def(QueryString.class, bi(QueryString::new), "qstr") } };
438438

439439
}
440440

0 commit comments

Comments
 (0)