Skip to content

Commit 999b820

Browse files
Uses populateOptionsMap from QueryString
1 parent 4774dbe commit 999b820

File tree

1 file changed

+1
-33
lines changed
  • x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/fulltext

1 file changed

+1
-33
lines changed

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

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,19 @@
77

88
package org.elasticsearch.xpack.esql.expression.function.fulltext;
99

10-
import org.apache.lucene.util.BytesRef;
1110
import org.elasticsearch.TransportVersions;
1211
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
1312
import org.elasticsearch.common.io.stream.StreamInput;
1413
import org.elasticsearch.common.io.stream.StreamOutput;
1514
import org.elasticsearch.index.query.QueryBuilder;
1615
import org.elasticsearch.xpack.esql.core.InvalidArgumentException;
17-
import org.elasticsearch.xpack.esql.core.expression.EntryExpression;
1816
import org.elasticsearch.xpack.esql.core.expression.Expression;
19-
import org.elasticsearch.xpack.esql.core.expression.Literal;
2017
import org.elasticsearch.xpack.esql.core.expression.MapExpression;
2118
import org.elasticsearch.xpack.esql.core.querydsl.query.Query;
2219
import org.elasticsearch.xpack.esql.core.querydsl.query.QueryStringQuery;
2320
import org.elasticsearch.xpack.esql.core.tree.NodeInfo;
2421
import org.elasticsearch.xpack.esql.core.tree.Source;
2522
import org.elasticsearch.xpack.esql.core.type.DataType;
26-
import org.elasticsearch.xpack.esql.core.type.DataTypeConverter;
2723
import org.elasticsearch.xpack.esql.expression.function.Example;
2824
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesTo;
2925
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesToLifecycle;
@@ -42,7 +38,6 @@
4238
import java.util.Set;
4339

4440
import static java.util.Map.entry;
45-
import static org.elasticsearch.common.logging.LoggerMessageFormat.format;
4641
import static org.elasticsearch.index.query.QueryStringQueryBuilder.ALLOW_LEADING_WILDCARD_FIELD;
4742
import static org.elasticsearch.index.query.QueryStringQueryBuilder.ANALYZER_FIELD;
4843
import static org.elasticsearch.index.query.QueryStringQueryBuilder.ANALYZE_WILDCARD_FIELD;
@@ -65,7 +60,6 @@
6560
import static org.elasticsearch.index.query.QueryStringQueryBuilder.TIME_ZONE_FIELD;
6661
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.ParamOrdinal.FIRST;
6762
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.ParamOrdinal.SECOND;
68-
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isFoldable;
6963
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isMapExpression;
7064
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isNotNull;
7165
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isNotNullAndFoldable;
@@ -330,33 +324,7 @@ private Map<String, Object> queryStringOptions() throws InvalidArgumentException
330324
}
331325

332326
Map<String, Object> matchOptions = new HashMap<>();
333-
for (EntryExpression entry : ((MapExpression) options()).entryExpressions()) {
334-
Expression optionExpr = entry.key();
335-
Expression valueExpr = entry.value();
336-
TypeResolution resolution = isFoldable(optionExpr, sourceText(), SECOND).and(isFoldable(valueExpr, sourceText(), SECOND));
337-
if (resolution.unresolved()) {
338-
throw new InvalidArgumentException(resolution.message());
339-
}
340-
Object optionExprLiteral = ((Literal) optionExpr).value();
341-
Object valueExprLiteral = ((Literal) valueExpr).value();
342-
String optionName = optionExprLiteral instanceof BytesRef br ? br.utf8ToString() : optionExprLiteral.toString();
343-
String optionValue = valueExprLiteral instanceof BytesRef br ? br.utf8ToString() : valueExprLiteral.toString();
344-
// validate the optionExpr is supported
345-
DataType dataType = ALLOWED_OPTIONS.get(optionName);
346-
if (dataType == null) {
347-
throw new InvalidArgumentException(
348-
format(null, "Invalid option [{}] in [{}], expected one of {}", optionName, sourceText(), ALLOWED_OPTIONS.keySet())
349-
);
350-
}
351-
try {
352-
matchOptions.put(optionName, DataTypeConverter.convert(optionValue, dataType));
353-
} catch (InvalidArgumentException e) {
354-
throw new InvalidArgumentException(
355-
format(null, "Invalid option [{}] in [{}], {}", optionName, sourceText(), e.getMessage())
356-
);
357-
}
358-
}
359-
327+
populateOptionsMap((MapExpression) options(), matchOptions, SECOND, sourceText(), ALLOWED_OPTIONS);
360328
return matchOptions;
361329
}
362330

0 commit comments

Comments
 (0)