|
8 | 8 |
|
9 | 9 | import org.elasticsearch.common.unit.Fuzziness; |
10 | 10 | import org.elasticsearch.common.xcontent.LoggingDeprecationHandler; |
11 | | -import org.elasticsearch.core.Booleans; |
12 | 11 | import org.elasticsearch.index.query.MultiMatchQueryBuilder; |
13 | 12 | import org.elasticsearch.index.query.Operator; |
14 | 13 | import org.elasticsearch.index.query.QueryBuilder; |
|
22 | 21 | import java.util.function.BiConsumer; |
23 | 22 |
|
24 | 23 | 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; |
25 | 47 |
|
26 | 48 | public class QueryStringQuery extends Query { |
27 | 49 |
|
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 | + ) |
53 | 77 | ); |
54 | 78 |
|
55 | 79 | private final String query; |
56 | 80 | private final Map<String, Float> fields; |
57 | | - private final Map<String, String> options; |
| 81 | + private final Map<String, Object> options; |
58 | 82 |
|
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) { |
60 | 84 | super(source); |
61 | 85 | this.query = query; |
62 | 86 | this.fields = fields; |
|
0 commit comments