| 
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