summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch
diff options
context:
space:
mode:
authorChristoph Büscher <christoph@elastic.co>2017-06-29 17:10:20 +0200
committerGitHub <noreply@github.com>2017-06-29 17:10:20 +0200
commit927111c91dac5e3cef868eead3cfe8fd4075bee5 (patch)
treed1879782d7d0c5a44323e211d44e5f5bbfc87913 /core/src/main/java/org/elasticsearch
parent22ff76da0c7eaaadfb4f5127770bdeba9eb0e6ac (diff)
Remove QueryParseContext from parsing QueryBuilders (#25448)
Currently QueryParseContext is only a thin wrapper around an XContentParser that adds little functionality of its own. I provides helpers for long deprecated field names which can be removed and two helper methods that can be made static and moved to other classes. This is a first step in helping to remove QueryParseContext entirely.
Diffstat (limited to 'core/src/main/java/org/elasticsearch')
-rw-r--r--core/src/main/java/org/elasticsearch/cluster/metadata/AliasValidator.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/AbstractQueryBuilder.java47
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/BoolQueryBuilder.java28
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/BoostingQueryBuilder.java15
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/CommonTermsQueryBuilder.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/ConstantScoreQueryBuilder.java8
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/DisMaxQueryBuilder.java8
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/ExistsQueryBuilder.java4
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/FieldMaskingSpanQueryBuilder.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/FuzzyQueryBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/GeoBoundingBoxQueryBuilder.java8
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/GeoDistanceQueryBuilder.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/GeoPolygonQueryBuilder.java8
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/GeoShapeQueryBuilder.java4
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/IdsQueryBuilder.java7
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/InnerHitBuilder.java12
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/MatchAllQueryBuilder.java8
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/MatchNoneQueryBuilder.java4
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/MatchPhraseQueryBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/MatchQueryBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java19
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/MultiMatchQueryBuilder.java4
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/NestedQueryBuilder.java7
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/PrefixQueryBuilder.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/QueryParseContext.java79
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/QueryParser.java15
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/QueryStringQueryBuilder.java3
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/RegexpQueryBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/ScriptQueryBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/SimpleQueryStringBuilder.java4
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/SpanContainingQueryBuilder.java7
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/SpanFirstQueryBuilder.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/SpanMultiTermQueryBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/SpanNearQueryBuilder.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/SpanNotQueryBuilder.java8
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/SpanOrQueryBuilder.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/SpanTermQueryBuilder.java3
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/SpanWithinQueryBuilder.java8
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/TermQueryBuilder.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java12
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/TypeQueryBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/WildcardQueryBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/WrapperQueryBuilder.java7
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/functionscore/DecayFunctionParser.java4
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/functionscore/FieldValueFactorFunctionBuilder.java4
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilder.java18
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/functionscore/RandomScoreFunctionBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionParser.java4
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/functionscore/ScriptScoreFunctionBuilder.java5
-rw-r--r--core/src/main/java/org/elasticsearch/indices/IndicesService.java4
-rw-r--r--core/src/main/java/org/elasticsearch/rest/action/RestActions.java31
-rw-r--r--core/src/main/java/org/elasticsearch/search/SearchModule.java5
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/AggregatorFactories.java4
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregator.java30
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FilterAggregationBuilder.java4
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/filters/FiltersAggregationBuilder.java8
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java4
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTextAggregationBuilder.java33
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/metrics/tophits/TopHitsAggregationBuilder.java7
-rw-r--r--core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java17
-rw-r--r--core/src/main/java/org/elasticsearch/search/collapse/CollapseBuilder.java4
-rw-r--r--core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/AbstractHighlighterBuilder.java11
-rw-r--r--core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilder.java12
-rw-r--r--core/src/main/java/org/elasticsearch/search/internal/AliasFilter.java4
-rw-r--r--core/src/main/java/org/elasticsearch/search/rescore/QueryRescorerBuilder.java4
-rw-r--r--core/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java9
-rw-r--r--core/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java8
-rw-r--r--core/src/main/java/org/elasticsearch/search/sort/ScoreSortBuilder.java7
-rw-r--r--core/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java9
-rw-r--r--core/src/main/java/org/elasticsearch/search/sort/SortBuilder.java22
-rw-r--r--core/src/main/java/org/elasticsearch/search/suggest/phrase/PhraseSuggester.java6
73 files changed, 308 insertions, 417 deletions
diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/AliasValidator.java b/core/src/main/java/org/elasticsearch/cluster/metadata/AliasValidator.java
index bce6e45c79..7df82adc2c 100644
--- a/core/src/main/java/org/elasticsearch/cluster/metadata/AliasValidator.java
+++ b/core/src/main/java/org/elasticsearch/cluster/metadata/AliasValidator.java
@@ -30,13 +30,14 @@ import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentHelper;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.query.QueryBuilder;
-import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.query.QueryShardContext;
import org.elasticsearch.indices.InvalidAliasNameException;
import java.io.IOException;
import java.util.function.Function;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
+
/**
* Validator for an alias, to be used before adding an alias to the index metadata
* and make sure the alias is valid
@@ -141,8 +142,7 @@ public class AliasValidator extends AbstractComponent {
}
private static void validateAliasFilter(XContentParser parser, QueryShardContext queryShardContext) throws IOException {
- QueryParseContext queryParseContext = queryShardContext.newParseContext(parser);
- QueryBuilder parseInnerQueryBuilder = queryParseContext.parseInnerQueryBuilder();
+ QueryBuilder parseInnerQueryBuilder = parseInnerQueryBuilder(parser);
QueryBuilder queryBuilder = QueryBuilder.rewriteQuery(parseInnerQueryBuilder, queryShardContext);
queryBuilder.toFilter(queryShardContext);
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/AbstractQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/AbstractQueryBuilder.java
index 72af541476..0ed05e299c 100644
--- a/core/src/main/java/org/elasticsearch/index/query/AbstractQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/AbstractQueryBuilder.java
@@ -31,8 +31,11 @@ import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.lucene.BytesRefs;
import org.elasticsearch.common.xcontent.AbstractObjectParser;
+import org.elasticsearch.common.xcontent.NamedXContentRegistry.UnknownNamedObjectException;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentLocation;
+import org.elasticsearch.common.xcontent.XContentParser;
+import org.elasticsearch.common.xcontent.XContentParser.Token;
import org.elasticsearch.common.xcontent.XContentType;
import java.io.IOException;
@@ -286,6 +289,50 @@ public abstract class AbstractQueryBuilder<QB extends AbstractQueryBuilder<QB>>
protected void extractInnerHitBuilders(Map<String, InnerHitContextBuilder> innerHits) {
}
+ /**
+ * Parses a query excluding the query element that wraps it
+ */
+ public static QueryBuilder parseInnerQueryBuilder(XContentParser parser) throws IOException {
+ if (parser.currentToken() != XContentParser.Token.START_OBJECT) {
+ if (parser.nextToken() != XContentParser.Token.START_OBJECT) {
+ throw new ParsingException(parser.getTokenLocation(), "[_na] query malformed, must start with start_object");
+ }
+ }
+ if (parser.nextToken() == XContentParser.Token.END_OBJECT) {
+ // we encountered '{}' for a query clause, it used to be supported, deprecated in 5.0 and removed in 6.0
+ throw new IllegalArgumentException("query malformed, empty clause found at [" + parser.getTokenLocation() +"]");
+ }
+ if (parser.currentToken() != XContentParser.Token.FIELD_NAME) {
+ throw new ParsingException(parser.getTokenLocation(), "[_na] query malformed, no field after start_object");
+ }
+ String queryName = parser.currentName();
+ // move to the next START_OBJECT
+ if (parser.nextToken() != XContentParser.Token.START_OBJECT) {
+ throw new ParsingException(parser.getTokenLocation(), "[" + queryName + "] query malformed, no start_object after query name");
+ }
+ QueryBuilder result;
+ try {
+ // TODO what can we pass in here
+ result = parser.namedObject(QueryBuilder.class, queryName, null);
+ } catch (UnknownNamedObjectException e) {
+ // Preserve the error message from 5.0 until we have a compellingly better message so we don't break BWC.
+ // This intentionally doesn't include the causing exception because that'd change the "root_cause" of any unknown query errors
+ throw new ParsingException(new XContentLocation(e.getLineNumber(), e.getColumnNumber()),
+ "no [query] registered for [" + e.getName() + "]");
+ }
+ //end_object of the specific query (e.g. match, multi_match etc.) element
+ if (parser.currentToken() != XContentParser.Token.END_OBJECT) {
+ throw new ParsingException(parser.getTokenLocation(),
+ "[" + queryName + "] malformed query, expected [END_OBJECT] but found [" + parser.currentToken() + "]");
+ }
+ //end_object of the query object
+ if (parser.nextToken() != XContentParser.Token.END_OBJECT) {
+ throw new ParsingException(parser.getTokenLocation(),
+ "[" + queryName + "] malformed query, expected [END_OBJECT] but found [" + parser.currentToken() + "]");
+ }
+ return result;
+ }
+
// Like Objects.requireNotNull(...) but instead throws a IllegalArgumentException
protected static <T> T requireValue(T value, String message) {
if (value == null) {
diff --git a/core/src/main/java/org/elasticsearch/index/query/BoolQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/BoolQueryBuilder.java
index cab2aee910..d20361419c 100644
--- a/core/src/main/java/org/elasticsearch/index/query/BoolQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/BoolQueryBuilder.java
@@ -275,11 +275,9 @@ public class BoolQueryBuilder extends AbstractQueryBuilder<BoolQueryBuilder> {
builder.endArray();
}
- public static BoolQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException, ParsingException {
- XContentParser parser = parseContext.parser();
-
+ public static BoolQueryBuilder fromXContent(XContentParser parser) throws IOException, ParsingException {
boolean adjustPureNegative = BoolQueryBuilder.ADJUST_PURE_NEGATIVE_DEFAULT;
- float boost = AbstractQueryBuilder.DEFAULT_BOOST;
+ float boost = DEFAULT_BOOST;
String minimumShouldMatch = null;
final List<QueryBuilder> mustClauses = new ArrayList<>();
@@ -293,22 +291,20 @@ public class BoolQueryBuilder extends AbstractQueryBuilder<BoolQueryBuilder> {
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
switch (currentFieldName) {
case MUST:
- mustClauses.add(parseContext.parseInnerQueryBuilder());
+ mustClauses.add(parseInnerQueryBuilder(parser));
break;
case SHOULD:
- shouldClauses.add(parseContext.parseInnerQueryBuilder());
+ shouldClauses.add(parseInnerQueryBuilder(parser));
break;
case FILTER:
- filterClauses.add(parseContext.parseInnerQueryBuilder());
+ filterClauses.add(parseInnerQueryBuilder(parser));
break;
case MUST_NOT:
case MUSTNOT:
- mustNotClauses.add(parseContext.parseInnerQueryBuilder());
+ mustNotClauses.add(parseInnerQueryBuilder(parser));
break;
default:
throw new ParsingException(parser.getTokenLocation(), "[bool] query does not support [" + currentFieldName + "]");
@@ -317,17 +313,17 @@ public class BoolQueryBuilder extends AbstractQueryBuilder<BoolQueryBuilder> {
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
switch (currentFieldName) {
case MUST:
- mustClauses.add(parseContext.parseInnerQueryBuilder());
+ mustClauses.add(parseInnerQueryBuilder(parser));
break;
case SHOULD:
- shouldClauses.add(parseContext.parseInnerQueryBuilder());
+ shouldClauses.add(parseInnerQueryBuilder(parser));
break;
case FILTER:
- filterClauses.add(parseContext.parseInnerQueryBuilder());
+ filterClauses.add(parseInnerQueryBuilder(parser));
break;
case MUST_NOT:
case MUSTNOT:
- mustNotClauses.add(parseContext.parseInnerQueryBuilder());
+ mustNotClauses.add(parseInnerQueryBuilder(parser));
break;
default:
throw new ParsingException(parser.getTokenLocation(), "bool query does not support [" + currentFieldName + "]");
@@ -338,11 +334,11 @@ public class BoolQueryBuilder extends AbstractQueryBuilder<BoolQueryBuilder> {
// ignore
} else if (MINIMUM_SHOULD_MATCH.match(currentFieldName)) {
minimumShouldMatch = parser.textOrNull();
- } else if (AbstractQueryBuilder.BOOST_FIELD.match(currentFieldName)) {
+ } else if (BOOST_FIELD.match(currentFieldName)) {
boost = parser.floatValue();
} else if (ADJUST_PURE_NEGATIVE.match(currentFieldName)) {
adjustPureNegative = parser.booleanValue();
- } else if (AbstractQueryBuilder.NAME_FIELD.match(currentFieldName)) {
+ } else if (NAME_FIELD.match(currentFieldName)) {
queryName = parser.text();
} else {
throw new ParsingException(parser.getTokenLocation(), "[bool] query does not support [" + currentFieldName + "]");
diff --git a/core/src/main/java/org/elasticsearch/index/query/BoostingQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/BoostingQueryBuilder.java
index 11aaa90fba..833e3a2ed0 100644
--- a/core/src/main/java/org/elasticsearch/index/query/BoostingQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/BoostingQueryBuilder.java
@@ -32,6 +32,7 @@ import java.io.IOException;
import java.util.Map;
import java.util.Objects;
+
/**
* The BoostingQuery class can be used to effectively demote results that match a given query.
* Unlike the "NOT" clause, this still selects documents that contain undesirable terms,
@@ -136,14 +137,12 @@ public class BoostingQueryBuilder extends AbstractQueryBuilder<BoostingQueryBuil
builder.endObject();
}
- public static BoostingQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static BoostingQueryBuilder fromXContent(XContentParser parser) throws IOException {
QueryBuilder positiveQuery = null;
boolean positiveQueryFound = false;
QueryBuilder negativeQuery = null;
boolean negativeQueryFound = false;
- float boost = AbstractQueryBuilder.DEFAULT_BOOST;
+ float boost = DEFAULT_BOOST;
float negativeBoost = -1;
String queryName = null;
@@ -154,10 +153,10 @@ public class BoostingQueryBuilder extends AbstractQueryBuilder<BoostingQueryBuil
currentFieldName = parser.currentName();
} else if (token == XContentParser.Token.START_OBJECT) {
if (POSITIVE_FIELD.match(currentFieldName)) {
- positiveQuery = parseContext.parseInnerQueryBuilder();
+ positiveQuery = parseInnerQueryBuilder(parser);
positiveQueryFound = true;
} else if (NEGATIVE_FIELD.match(currentFieldName)) {
- negativeQuery = parseContext.parseInnerQueryBuilder();
+ negativeQuery = parseInnerQueryBuilder(parser);
negativeQueryFound = true;
} else {
throw new ParsingException(parser.getTokenLocation(), "[boosting] query does not support [" + currentFieldName + "]");
@@ -165,9 +164,9 @@ public class BoostingQueryBuilder extends AbstractQueryBuilder<BoostingQueryBuil
} else if (token.isValue()) {
if (NEGATIVE_BOOST_FIELD.match(currentFieldName)) {
negativeBoost = parser.floatValue();
- } else if (AbstractQueryBuilder.NAME_FIELD.match(currentFieldName)) {
+ } else if (NAME_FIELD.match(currentFieldName)) {
queryName = parser.text();
- } else if (AbstractQueryBuilder.BOOST_FIELD.match(currentFieldName)) {
+ } else if (BOOST_FIELD.match(currentFieldName)) {
boost = parser.floatValue();
} else {
throw new ParsingException(parser.getTokenLocation(), "[boosting] query does not support [" + currentFieldName + "]");
diff --git a/core/src/main/java/org/elasticsearch/index/query/CommonTermsQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/CommonTermsQueryBuilder.java
index 63b09540a1..dc7c3d92e9 100644
--- a/core/src/main/java/org/elasticsearch/index/query/CommonTermsQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/CommonTermsQueryBuilder.java
@@ -248,9 +248,7 @@ public class CommonTermsQueryBuilder extends AbstractQueryBuilder<CommonTermsQue
builder.endObject();
}
- public static CommonTermsQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static CommonTermsQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
Object text = null;
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
@@ -266,8 +264,6 @@ public class CommonTermsQueryBuilder extends AbstractQueryBuilder<CommonTermsQue
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
fieldName = currentFieldName;
diff --git a/core/src/main/java/org/elasticsearch/index/query/ConstantScoreQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/ConstantScoreQueryBuilder.java
index 9308d3495d..324759c9c6 100644
--- a/core/src/main/java/org/elasticsearch/index/query/ConstantScoreQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/ConstantScoreQueryBuilder.java
@@ -85,9 +85,7 @@ public class ConstantScoreQueryBuilder extends AbstractQueryBuilder<ConstantScor
builder.endObject();
}
- public static ConstantScoreQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static ConstantScoreQueryBuilder fromXContent(XContentParser parser) throws IOException {
QueryBuilder query = null;
boolean queryFound = false;
String queryName = null;
@@ -98,15 +96,13 @@ public class ConstantScoreQueryBuilder extends AbstractQueryBuilder<ConstantScor
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
if (INNER_QUERY_FIELD.match(currentFieldName)) {
if (queryFound) {
throw new ParsingException(parser.getTokenLocation(), "[" + ConstantScoreQueryBuilder.NAME + "]"
+ " accepts only one 'filter' element.");
}
- query = parseContext.parseInnerQueryBuilder();
+ query = parseInnerQueryBuilder(parser);
queryFound = true;
} else {
throw new ParsingException(parser.getTokenLocation(),
diff --git a/core/src/main/java/org/elasticsearch/index/query/DisMaxQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/DisMaxQueryBuilder.java
index 7bad1d0fe3..5167120408 100644
--- a/core/src/main/java/org/elasticsearch/index/query/DisMaxQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/DisMaxQueryBuilder.java
@@ -122,9 +122,7 @@ public class DisMaxQueryBuilder extends AbstractQueryBuilder<DisMaxQueryBuilder>
builder.endObject();
}
- public static DisMaxQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static DisMaxQueryBuilder fromXContent(XContentParser parser) throws IOException {
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
float tieBreaker = DisMaxQueryBuilder.DEFAULT_TIE_BREAKER;
@@ -140,7 +138,7 @@ public class DisMaxQueryBuilder extends AbstractQueryBuilder<DisMaxQueryBuilder>
} else if (token == XContentParser.Token.START_OBJECT) {
if (QUERIES_FIELD.match(currentFieldName)) {
queriesFound = true;
- queries.add(parseContext.parseInnerQueryBuilder());
+ queries.add(parseInnerQueryBuilder(parser));
} else {
throw new ParsingException(parser.getTokenLocation(), "[dis_max] query does not support [" + currentFieldName + "]");
}
@@ -148,7 +146,7 @@ public class DisMaxQueryBuilder extends AbstractQueryBuilder<DisMaxQueryBuilder>
if (QUERIES_FIELD.match(currentFieldName)) {
queriesFound = true;
while (token != XContentParser.Token.END_ARRAY) {
- queries.add(parseContext.parseInnerQueryBuilder());
+ queries.add(parseInnerQueryBuilder(parser));
token = parser.nextToken();
}
} else {
diff --git a/core/src/main/java/org/elasticsearch/index/query/ExistsQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/ExistsQueryBuilder.java
index f8e3bdec0d..799998e2c9 100644
--- a/core/src/main/java/org/elasticsearch/index/query/ExistsQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/ExistsQueryBuilder.java
@@ -83,9 +83,7 @@ public class ExistsQueryBuilder extends AbstractQueryBuilder<ExistsQueryBuilder>
builder.endObject();
}
- public static ExistsQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static ExistsQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldPattern = null;
String queryName = null;
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
diff --git a/core/src/main/java/org/elasticsearch/index/query/FieldMaskingSpanQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/FieldMaskingSpanQueryBuilder.java
index a7ef6d9551..9fd037f561 100644
--- a/core/src/main/java/org/elasticsearch/index/query/FieldMaskingSpanQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/FieldMaskingSpanQueryBuilder.java
@@ -100,9 +100,7 @@ public class FieldMaskingSpanQueryBuilder extends AbstractQueryBuilder<FieldMask
builder.endObject();
}
- public static FieldMaskingSpanQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static FieldMaskingSpanQueryBuilder fromXContent(XContentParser parser) throws IOException {
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
SpanQueryBuilder inner = null;
@@ -116,7 +114,7 @@ public class FieldMaskingSpanQueryBuilder extends AbstractQueryBuilder<FieldMask
currentFieldName = parser.currentName();
} else if (token == XContentParser.Token.START_OBJECT) {
if (QUERY_FIELD.match(currentFieldName)) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof SpanQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(), "[field_masking_span] query must be of type span query");
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/FuzzyQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/FuzzyQueryBuilder.java
index c6f153f319..1f43944c8a 100644
--- a/core/src/main/java/org/elasticsearch/index/query/FuzzyQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/FuzzyQueryBuilder.java
@@ -251,8 +251,7 @@ public class FuzzyQueryBuilder extends AbstractQueryBuilder<FuzzyQueryBuilder> i
builder.endObject();
}
- public static FuzzyQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static FuzzyQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
Object value = null;
Fuzziness fuzziness = FuzzyQueryBuilder.DEFAULT_FUZZINESS;
@@ -267,8 +266,6 @@ public class FuzzyQueryBuilder extends AbstractQueryBuilder<FuzzyQueryBuilder> i
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
fieldName = currentFieldName;
diff --git a/core/src/main/java/org/elasticsearch/index/query/GeoBoundingBoxQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/GeoBoundingBoxQueryBuilder.java
index f006f056f9..a0b60dd30c 100644
--- a/core/src/main/java/org/elasticsearch/index/query/GeoBoundingBoxQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/GeoBoundingBoxQueryBuilder.java
@@ -375,9 +375,7 @@ public class GeoBoundingBoxQueryBuilder extends AbstractQueryBuilder<GeoBounding
builder.endObject();
}
- public static GeoBoundingBoxQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static GeoBoundingBoxQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
double top = Double.NaN;
@@ -406,9 +404,7 @@ public class GeoBoundingBoxQueryBuilder extends AbstractQueryBuilder<GeoBounding
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
token = parser.nextToken();
- if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
- } else if (FIELD_FIELD.match(currentFieldName)) {
+ if (FIELD_FIELD.match(currentFieldName)) {
fieldName = parser.text();
} else if (TOP_FIELD.match(currentFieldName)) {
top = parser.doubleValue();
diff --git a/core/src/main/java/org/elasticsearch/index/query/GeoDistanceQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/GeoDistanceQueryBuilder.java
index 41aea1be12..f868584d50 100644
--- a/core/src/main/java/org/elasticsearch/index/query/GeoDistanceQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/GeoDistanceQueryBuilder.java
@@ -269,9 +269,7 @@ public class GeoDistanceQueryBuilder extends AbstractQueryBuilder<GeoDistanceQue
builder.endObject();
}
- public static GeoDistanceQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static GeoDistanceQueryBuilder fromXContent(XContentParser parser) throws IOException {
XContentParser.Token token;
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
@@ -288,8 +286,6 @@ public class GeoDistanceQueryBuilder extends AbstractQueryBuilder<GeoDistanceQue
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_ARRAY) {
fieldName = currentFieldName;
GeoUtils.parseGeoPoint(parser, point);
diff --git a/core/src/main/java/org/elasticsearch/index/query/GeoPolygonQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/GeoPolygonQueryBuilder.java
index 1f9e81cecc..45e71231ab 100644
--- a/core/src/main/java/org/elasticsearch/index/query/GeoPolygonQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/GeoPolygonQueryBuilder.java
@@ -221,9 +221,7 @@ public class GeoPolygonQueryBuilder extends AbstractQueryBuilder<GeoPolygonQuery
builder.endObject();
}
- public static GeoPolygonQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static GeoPolygonQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
List<GeoPoint> shell = null;
@@ -238,8 +236,6 @@ public class GeoPolygonQueryBuilder extends AbstractQueryBuilder<GeoPolygonQuery
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
fieldName = currentFieldName;
@@ -248,7 +244,7 @@ public class GeoPolygonQueryBuilder extends AbstractQueryBuilder<GeoPolygonQuery
currentFieldName = parser.currentName();
} else if (token == XContentParser.Token.START_ARRAY) {
if (POINTS_FIELD.match(currentFieldName)) {
- shell = new ArrayList<GeoPoint>();
+ shell = new ArrayList<>();
while ((token = parser.nextToken()) != Token.END_ARRAY) {
shell.add(GeoUtils.parseGeoPoint(parser));
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/GeoShapeQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/GeoShapeQueryBuilder.java
index 138f62a92c..ea6ecc9a53 100644
--- a/core/src/main/java/org/elasticsearch/index/query/GeoShapeQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/GeoShapeQueryBuilder.java
@@ -457,9 +457,7 @@ public class GeoShapeQueryBuilder extends AbstractQueryBuilder<GeoShapeQueryBuil
builder.endObject();
}
- public static GeoShapeQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static GeoShapeQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
ShapeRelation shapeRelation = null;
SpatialStrategy strategy = null;
diff --git a/core/src/main/java/org/elasticsearch/index/query/IdsQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/IdsQueryBuilder.java
index 1b756062dc..d4511ca83a 100644
--- a/core/src/main/java/org/elasticsearch/index/query/IdsQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/IdsQueryBuilder.java
@@ -30,6 +30,7 @@ import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.lucene.search.Queries;
import org.elasticsearch.common.xcontent.ObjectParser;
import org.elasticsearch.common.xcontent.XContentBuilder;
+import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.mapper.MappedFieldType;
import org.elasticsearch.index.mapper.Uid;
import org.elasticsearch.index.mapper.UidFieldMapper;
@@ -146,11 +147,11 @@ public class IdsQueryBuilder extends AbstractQueryBuilder<IdsQueryBuilder> {
declareStandardFields(PARSER);
}
- public static IdsQueryBuilder fromXContent(QueryParseContext context) {
+ public static IdsQueryBuilder fromXContent(XContentParser parser) {
try {
- return PARSER.apply(context.parser(), context);
+ return PARSER.apply(parser, null);
} catch (IllegalArgumentException e) {
- throw new ParsingException(context.parser().getTokenLocation(), e.getMessage(), e);
+ throw new ParsingException(parser.getTokenLocation(), e.getMessage(), e);
}
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/InnerHitBuilder.java b/core/src/main/java/org/elasticsearch/index/query/InnerHitBuilder.java
index 7b331dd487..fb0f2850c1 100644
--- a/core/src/main/java/org/elasticsearch/index/query/InnerHitBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/InnerHitBuilder.java
@@ -75,23 +75,23 @@ public final class InnerHitBuilder extends ToXContentToBytes implements Writeabl
try {
Set<ScriptField> scriptFields = new HashSet<>();
for (XContentParser.Token token = p.nextToken(); token != END_OBJECT; token = p.nextToken()) {
- scriptFields.add(new ScriptField(c));
+ scriptFields.add(new ScriptField(p));
}
i.setScriptFields(scriptFields);
} catch (IOException e) {
throw new ParsingException(p.getTokenLocation(), "Could not parse inner script definition", e);
}
}, SearchSourceBuilder.SCRIPT_FIELDS_FIELD, ObjectParser.ValueType.OBJECT);
- PARSER.declareField((p, i, c) -> i.setSorts(SortBuilder.fromXContent(c)), SearchSourceBuilder.SORT_FIELD,
+ PARSER.declareField((p, i, c) -> i.setSorts(SortBuilder.fromXContent(p)), SearchSourceBuilder.SORT_FIELD,
ObjectParser.ValueType.OBJECT_ARRAY);
PARSER.declareField((p, i, c) -> {
try {
- i.setFetchSourceContext(FetchSourceContext.fromXContent(c.parser()));
+ i.setFetchSourceContext(FetchSourceContext.fromXContent(p));
} catch (IOException e) {
throw new ParsingException(p.getTokenLocation(), "Could not parse inner _source definition", e);
}
}, SearchSourceBuilder._SOURCE_FIELD, ObjectParser.ValueType.OBJECT_ARRAY_BOOLEAN_OR_STRING);
- PARSER.declareObject(InnerHitBuilder::setHighlightBuilder, (p, c) -> HighlightBuilder.fromXContent(c),
+ PARSER.declareObject(InnerHitBuilder::setHighlightBuilder, (p, c) -> HighlightBuilder.fromXContent(p),
SearchSourceBuilder.HIGHLIGHT_FIELD);
}
@@ -582,7 +582,7 @@ public final class InnerHitBuilder extends ToXContentToBytes implements Writeabl
storedFieldsContext, docValueFields, scriptFields, fetchSourceContext, sorts, highlightBuilder);
}
- public static InnerHitBuilder fromXContent(QueryParseContext context) throws IOException {
- return PARSER.parse(context.parser(), new InnerHitBuilder(), context);
+ public static InnerHitBuilder fromXContent(XContentParser parser) throws IOException {
+ return PARSER.parse(parser, new InnerHitBuilder(), null);
}
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/MatchAllQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MatchAllQueryBuilder.java
index 63580eca3e..2f50aa731f 100644
--- a/core/src/main/java/org/elasticsearch/index/query/MatchAllQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/MatchAllQueryBuilder.java
@@ -26,9 +26,9 @@ import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.lucene.search.Queries;
import org.elasticsearch.common.xcontent.ObjectParser;
import org.elasticsearch.common.xcontent.XContentBuilder;
+import org.elasticsearch.common.xcontent.XContentParser;
import java.io.IOException;
-import java.util.Optional;
/**
* A query that matches on all documents.
@@ -64,11 +64,11 @@ public class MatchAllQueryBuilder extends AbstractQueryBuilder<MatchAllQueryBuil
declareStandardFields(PARSER);
}
- public static MatchAllQueryBuilder fromXContent(QueryParseContext context) {
+ public static MatchAllQueryBuilder fromXContent(XContentParser parser) {
try {
- return PARSER.apply(context.parser(), context);
+ return PARSER.apply(parser, null);
} catch (IllegalArgumentException e) {
- throw new ParsingException(context.parser().getTokenLocation(), e.getMessage(), e);
+ throw new ParsingException(parser.getTokenLocation(), e.getMessage(), e);
}
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/MatchNoneQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MatchNoneQueryBuilder.java
index 79c64b32bb..5049cf5a0e 100644
--- a/core/src/main/java/org/elasticsearch/index/query/MatchNoneQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/MatchNoneQueryBuilder.java
@@ -57,9 +57,7 @@ public class MatchNoneQueryBuilder extends AbstractQueryBuilder<MatchNoneQueryBu
builder.endObject();
}
- public static MatchNoneQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static MatchNoneQueryBuilder fromXContent(XContentParser parser) throws IOException {
String currentFieldName = null;
XContentParser.Token token;
String queryName = null;
diff --git a/core/src/main/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilder.java
index 17495642cc..a571d9c462 100644
--- a/core/src/main/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/MatchPhrasePrefixQueryBuilder.java
@@ -189,8 +189,7 @@ public class MatchPhrasePrefixQueryBuilder extends AbstractQueryBuilder<MatchPhr
return Objects.hash(fieldName, value, analyzer, slop, maxExpansions);
}
- public static MatchPhrasePrefixQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static MatchPhrasePrefixQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
Object value = null;
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
@@ -203,8 +202,6 @@ public class MatchPhrasePrefixQueryBuilder extends AbstractQueryBuilder<MatchPhr
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
fieldName = currentFieldName;
diff --git a/core/src/main/java/org/elasticsearch/index/query/MatchPhraseQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MatchPhraseQueryBuilder.java
index e5227570b3..48296e3f46 100644
--- a/core/src/main/java/org/elasticsearch/index/query/MatchPhraseQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/MatchPhraseQueryBuilder.java
@@ -161,8 +161,7 @@ public class MatchPhraseQueryBuilder extends AbstractQueryBuilder<MatchPhraseQue
return Objects.hash(fieldName, value, analyzer, slop);
}
- public static MatchPhraseQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static MatchPhraseQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
Object value = null;
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
@@ -174,8 +173,6 @@ public class MatchPhraseQueryBuilder extends AbstractQueryBuilder<MatchPhraseQue
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
fieldName = currentFieldName;
diff --git a/core/src/main/java/org/elasticsearch/index/query/MatchQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MatchQueryBuilder.java
index 6e470db613..c1b8922b20 100644
--- a/core/src/main/java/org/elasticsearch/index/query/MatchQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/MatchQueryBuilder.java
@@ -491,8 +491,7 @@ public class MatchQueryBuilder extends AbstractQueryBuilder<MatchQueryBuilder> {
return NAME;
}
- public static MatchQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static MatchQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
MatchQuery.Type type = MatchQuery.Type.BOOLEAN;
Object value = null;
@@ -515,8 +514,6 @@ public class MatchQueryBuilder extends AbstractQueryBuilder<MatchQueryBuilder> {
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
fieldName = currentFieldName;
diff --git a/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java
index 7889dee26d..a4872b1244 100644
--- a/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java
@@ -809,9 +809,7 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
builder.endObject();
}
- public static MoreLikeThisQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static MoreLikeThisQueryBuilder fromXContent(XContentParser parser) throws IOException {
// document inputs
List<String> fields = null;
List<String> likeTexts = new ArrayList<>();
@@ -846,9 +844,9 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
currentFieldName = parser.currentName();
} else if (token.isValue()) {
if (Field.LIKE.match(currentFieldName)) {
- parseLikeField(parseContext, likeTexts, likeItems);
+ parseLikeField(parser, likeTexts, likeItems);
} else if (Field.UNLIKE.match(currentFieldName)) {
- parseLikeField(parseContext, unlikeTexts, unlikeItems);
+ parseLikeField(parser, unlikeTexts, unlikeItems);
} else if (Field.LIKE_TEXT.match(currentFieldName)) {
likeTexts.add(parser.text());
} else if (Field.MAX_QUERY_TERMS.match(currentFieldName)) {
@@ -888,11 +886,11 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
}
} else if (Field.LIKE.match(currentFieldName)) {
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
- parseLikeField(parseContext, likeTexts, likeItems);
+ parseLikeField(parser, likeTexts, likeItems);
}
} else if (Field.UNLIKE.match(currentFieldName)) {
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
- parseLikeField(parseContext, unlikeTexts, unlikeItems);
+ parseLikeField(parser, unlikeTexts, unlikeItems);
}
} else if (Field.IDS.match(currentFieldName)) {
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
@@ -918,9 +916,9 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
}
} else if (token == XContentParser.Token.START_OBJECT) {
if (Field.LIKE.match(currentFieldName)) {
- parseLikeField(parseContext, likeTexts, likeItems);
+ parseLikeField(parser, likeTexts, likeItems);
} else if (Field.UNLIKE.match(currentFieldName)) {
- parseLikeField(parseContext, unlikeTexts, unlikeItems);
+ parseLikeField(parser, unlikeTexts, unlikeItems);
} else {
throw new ParsingException(parser.getTokenLocation(), "[mlt] query does not support [" + currentFieldName + "]");
}
@@ -962,8 +960,7 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
return moreLikeThisQueryBuilder;
}
- private static void parseLikeField(QueryParseContext parseContext, List<String> texts, List<Item> items) throws IOException {
- XContentParser parser = parseContext.parser();
+ private static void parseLikeField(XContentParser parser, List<String> texts, List<Item> items) throws IOException {
if (parser.currentToken().isValue()) {
texts.add(parser.text());
} else if (parser.currentToken() == XContentParser.Token.START_OBJECT) {
diff --git a/core/src/main/java/org/elasticsearch/index/query/MultiMatchQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MultiMatchQueryBuilder.java
index b668b8d983..1cddb6e36c 100644
--- a/core/src/main/java/org/elasticsearch/index/query/MultiMatchQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/MultiMatchQueryBuilder.java
@@ -554,9 +554,7 @@ public class MultiMatchQueryBuilder extends AbstractQueryBuilder<MultiMatchQuery
builder.endObject();
}
- public static MultiMatchQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static MultiMatchQueryBuilder fromXContent(XContentParser parser) throws IOException {
Object value = null;
Map<String, Float> fieldsBoosts = new HashMap<>();
MultiMatchQueryBuilder.Type type = DEFAULT_TYPE;
diff --git a/core/src/main/java/org/elasticsearch/index/query/NestedQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/NestedQueryBuilder.java
index ae092443f4..b9037110b1 100644
--- a/core/src/main/java/org/elasticsearch/index/query/NestedQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/NestedQueryBuilder.java
@@ -178,8 +178,7 @@ public class NestedQueryBuilder extends AbstractQueryBuilder<NestedQueryBuilder>
builder.endObject();
}
- public static NestedQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static NestedQueryBuilder fromXContent(XContentParser parser) throws IOException {
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
ScoreMode scoreMode = ScoreMode.Avg;
String queryName = null;
@@ -194,9 +193,9 @@ public class NestedQueryBuilder extends AbstractQueryBuilder<NestedQueryBuilder>
currentFieldName = parser.currentName();
} else if (token == XContentParser.Token.START_OBJECT) {
if (QUERY_FIELD.match(currentFieldName)) {
- query = parseContext.parseInnerQueryBuilder();
+ query = parseInnerQueryBuilder(parser);
} else if (INNER_HITS_FIELD.match(currentFieldName)) {
- innerHitBuilder = InnerHitBuilder.fromXContent(parseContext);
+ innerHitBuilder = InnerHitBuilder.fromXContent(parser);
} else {
throw new ParsingException(parser.getTokenLocation(), "[nested] query does not support [" + currentFieldName + "]");
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/PrefixQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/PrefixQueryBuilder.java
index 7410ca68af..0392f0e7ff 100644
--- a/core/src/main/java/org/elasticsearch/index/query/PrefixQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/PrefixQueryBuilder.java
@@ -116,9 +116,7 @@ public class PrefixQueryBuilder extends AbstractQueryBuilder<PrefixQueryBuilder>
builder.endObject();
}
- public static PrefixQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static PrefixQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
String value = null;
String rewrite = null;
@@ -130,8 +128,6 @@ public class PrefixQueryBuilder extends AbstractQueryBuilder<PrefixQueryBuilder>
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
fieldName = currentFieldName;
diff --git a/core/src/main/java/org/elasticsearch/index/query/QueryParseContext.java b/core/src/main/java/org/elasticsearch/index/query/QueryParseContext.java
index 269ee1048d..fb61202816 100644
--- a/core/src/main/java/org/elasticsearch/index/query/QueryParseContext.java
+++ b/core/src/main/java/org/elasticsearch/index/query/QueryParseContext.java
@@ -19,20 +19,12 @@
package org.elasticsearch.index.query;
-import org.elasticsearch.common.ParseField;
-import org.elasticsearch.common.ParsingException;
-import org.elasticsearch.common.xcontent.NamedXContentRegistry.UnknownNamedObjectException;
-import org.elasticsearch.common.xcontent.XContentLocation;
import org.elasticsearch.common.xcontent.XContentParser;
-import java.io.IOException;
import java.util.Objects;
public class QueryParseContext {
- private static final ParseField CACHE = new ParseField("_cache").withAllDeprecated("Elasticsearch makes its own caching decisions");
- private static final ParseField CACHE_KEY = new ParseField("_cache_key").withAllDeprecated("Filters are always used as cache keys");
-
private final XContentParser parser;
public QueryParseContext(XContentParser parser) {
@@ -42,75 +34,4 @@ public class QueryParseContext {
public XContentParser parser() {
return this.parser;
}
-
- public boolean isDeprecatedSetting(String setting) {
- return CACHE.match(setting) || CACHE_KEY.match(setting);
- }
-
- /**
- * Parses a top level query including the query element that wraps it
- */
- public QueryBuilder parseTopLevelQueryBuilder() {
- try {
- QueryBuilder queryBuilder = null;
- for (XContentParser.Token token = parser.nextToken(); token != XContentParser.Token.END_OBJECT; token = parser.nextToken()) {
- if (token == XContentParser.Token.FIELD_NAME) {
- String fieldName = parser.currentName();
- if ("query".equals(fieldName)) {
- queryBuilder = parseInnerQueryBuilder();
- } else {
- throw new ParsingException(parser.getTokenLocation(), "request does not support [" + parser.currentName() + "]");
- }
- }
- }
- return queryBuilder;
- } catch (ParsingException e) {
- throw e;
- } catch (Exception e) {
- throw new ParsingException(parser == null ? null : parser.getTokenLocation(), "Failed to parse", e);
- }
- }
-
- /**
- * Parses a query excluding the query element that wraps it
- */
- public QueryBuilder parseInnerQueryBuilder() throws IOException {
- if (parser.currentToken() != XContentParser.Token.START_OBJECT) {
- if (parser.nextToken() != XContentParser.Token.START_OBJECT) {
- throw new ParsingException(parser.getTokenLocation(), "[_na] query malformed, must start with start_object");
- }
- }
- if (parser.nextToken() == XContentParser.Token.END_OBJECT) {
- // we encountered '{}' for a query clause, it used to be supported, deprecated in 5.0 and removed in 6.0
- throw new IllegalArgumentException("query malformed, empty clause found at [" + parser.getTokenLocation() +"]");
- }
- if (parser.currentToken() != XContentParser.Token.FIELD_NAME) {
- throw new ParsingException(parser.getTokenLocation(), "[_na] query malformed, no field after start_object");
- }
- String queryName = parser.currentName();
- // move to the next START_OBJECT
- if (parser.nextToken() != XContentParser.Token.START_OBJECT) {
- throw new ParsingException(parser.getTokenLocation(), "[" + queryName + "] query malformed, no start_object after query name");
- }
- QueryBuilder result;
- try {
- result = parser.namedObject(QueryBuilder.class, queryName, this);
- } catch (UnknownNamedObjectException e) {
- // Preserve the error message from 5.0 until we have a compellingly better message so we don't break BWC.
- // This intentionally doesn't include the causing exception because that'd change the "root_cause" of any unknown query errors
- throw new ParsingException(new XContentLocation(e.getLineNumber(), e.getColumnNumber()),
- "no [query] registered for [" + e.getName() + "]");
- }
- //end_object of the specific query (e.g. match, multi_match etc.) element
- if (parser.currentToken() != XContentParser.Token.END_OBJECT) {
- throw new ParsingException(parser.getTokenLocation(),
- "[" + queryName + "] malformed query, expected [END_OBJECT] but found [" + parser.currentToken() + "]");
- }
- //end_object of the query object
- if (parser.nextToken() != XContentParser.Token.END_OBJECT) {
- throw new ParsingException(parser.getTokenLocation(),
- "[" + queryName + "] malformed query, expected [END_OBJECT] but found [" + parser.currentToken() + "]");
- }
- return result;
- }
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/QueryParser.java b/core/src/main/java/org/elasticsearch/index/query/QueryParser.java
index 069dc86cf8..fc50a5e31f 100644
--- a/core/src/main/java/org/elasticsearch/index/query/QueryParser.java
+++ b/core/src/main/java/org/elasticsearch/index/query/QueryParser.java
@@ -19,6 +19,8 @@
package org.elasticsearch.index.query;
+import org.elasticsearch.common.xcontent.XContentParser;
+
import java.io.IOException;
/**
@@ -27,14 +29,9 @@ import java.io.IOException;
@FunctionalInterface
public interface QueryParser<QB extends QueryBuilder> {
/**
- * Creates a new {@link QueryBuilder} from the query held by the {@link QueryParseContext}
- * in {@link org.elasticsearch.common.xcontent.XContent} format
- *
- * @param parseContext
- * the input parse context. The state on the parser contained in
- * this context will be changed as a side effect of this method
- * call
- * @return the new QueryBuilder
+ * Creates a new {@link QueryBuilder} from the query held by the
+ * {@link XContentParser}. The state on the parser contained in this context
+ * will be changed as a side effect of this method call
*/
- QB fromXContent(QueryParseContext parseContext) throws IOException;
+ QB fromXContent(XContentParser parser) throws IOException;
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/QueryStringQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/QueryStringQueryBuilder.java
index 0269249e82..8e08b3dc7d 100644
--- a/core/src/main/java/org/elasticsearch/index/query/QueryStringQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/QueryStringQueryBuilder.java
@@ -683,8 +683,7 @@ public class QueryStringQueryBuilder extends AbstractQueryBuilder<QueryStringQue
builder.endObject();
}
- public static QueryStringQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static QueryStringQueryBuilder fromXContent(XContentParser parser) throws IOException {
String currentFieldName = null;
XContentParser.Token token;
String queryString = null;
diff --git a/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java
index a8b2dcc471..b83d9fa73d 100644
--- a/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java
@@ -343,9 +343,7 @@ public class RangeQueryBuilder extends AbstractQueryBuilder<RangeQueryBuilder> i
builder.endObject();
}
- public static RangeQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static RangeQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
Object from = null;
Object to = null;
@@ -362,8 +360,6 @@ public class RangeQueryBuilder extends AbstractQueryBuilder<RangeQueryBuilder> i
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
fieldName = currentFieldName;
diff --git a/core/src/main/java/org/elasticsearch/index/query/RegexpQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/RegexpQueryBuilder.java
index 7957f0de0a..e6ae1b7d63 100644
--- a/core/src/main/java/org/elasticsearch/index/query/RegexpQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/RegexpQueryBuilder.java
@@ -177,8 +177,7 @@ public class RegexpQueryBuilder extends AbstractQueryBuilder<RegexpQueryBuilder>
builder.endObject();
}
- public static RegexpQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static RegexpQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
String rewrite = null;
String value = null;
@@ -191,8 +190,6 @@ public class RegexpQueryBuilder extends AbstractQueryBuilder<RegexpQueryBuilder>
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
fieldName = currentFieldName;
diff --git a/core/src/main/java/org/elasticsearch/index/query/ScriptQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/ScriptQueryBuilder.java
index 0d608fd5f1..7272316499 100644
--- a/core/src/main/java/org/elasticsearch/index/query/ScriptQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/ScriptQueryBuilder.java
@@ -84,8 +84,7 @@ public class ScriptQueryBuilder extends AbstractQueryBuilder<ScriptQueryBuilder>
builder.endObject();
}
- public static ScriptQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static ScriptQueryBuilder fromXContent(XContentParser parser) throws IOException {
// also, when caching, since its isCacheable is false, will result in loading all bit set...
Script script = null;
@@ -97,8 +96,6 @@ public class ScriptQueryBuilder extends AbstractQueryBuilder<ScriptQueryBuilder>
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
if (Script.SCRIPT_PARSE_FIELD.match(currentFieldName)) {
script = Script.parse(parser);
diff --git a/core/src/main/java/org/elasticsearch/index/query/SimpleQueryStringBuilder.java b/core/src/main/java/org/elasticsearch/index/query/SimpleQueryStringBuilder.java
index 2efa4e815a..2430534e66 100644
--- a/core/src/main/java/org/elasticsearch/index/query/SimpleQueryStringBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/SimpleQueryStringBuilder.java
@@ -462,9 +462,7 @@ public class SimpleQueryStringBuilder extends AbstractQueryBuilder<SimpleQuerySt
builder.endObject();
}
- public static SimpleQueryStringBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static SimpleQueryStringBuilder fromXContent(XContentParser parser) throws IOException {
String currentFieldName = null;
String queryBody = null;
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
diff --git a/core/src/main/java/org/elasticsearch/index/query/SpanContainingQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/SpanContainingQueryBuilder.java
index 08a3e62fc6..264a8c559c 100644
--- a/core/src/main/java/org/elasticsearch/index/query/SpanContainingQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/SpanContainingQueryBuilder.java
@@ -99,8 +99,7 @@ public class SpanContainingQueryBuilder extends AbstractQueryBuilder<SpanContain
builder.endObject();
}
- public static SpanContainingQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static SpanContainingQueryBuilder fromXContent(XContentParser parser) throws IOException {
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
String queryName = null;
SpanQueryBuilder big = null;
@@ -113,13 +112,13 @@ public class SpanContainingQueryBuilder extends AbstractQueryBuilder<SpanContain
currentFieldName = parser.currentName();
} else if (token == XContentParser.Token.START_OBJECT) {
if (BIG_FIELD.match(currentFieldName)) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof SpanQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(), "span_containing [big] must be of type span query");
}
big = (SpanQueryBuilder) query;
} else if (LITTLE_FIELD.match(currentFieldName)) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof SpanQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(), "span_containing [little] must be of type span query");
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/SpanFirstQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/SpanFirstQueryBuilder.java
index d1d27924cc..135f408602 100644
--- a/core/src/main/java/org/elasticsearch/index/query/SpanFirstQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/SpanFirstQueryBuilder.java
@@ -99,9 +99,7 @@ public class SpanFirstQueryBuilder extends AbstractQueryBuilder<SpanFirstQueryBu
builder.endObject();
}
- public static SpanFirstQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static SpanFirstQueryBuilder fromXContent(XContentParser parser) throws IOException {
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
SpanQueryBuilder match = null;
@@ -115,7 +113,7 @@ public class SpanFirstQueryBuilder extends AbstractQueryBuilder<SpanFirstQueryBu
currentFieldName = parser.currentName();
} else if (token == XContentParser.Token.START_OBJECT) {
if (MATCH_FIELD.match(currentFieldName)) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof SpanQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(), "spanFirst [match] must be of type span query");
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/SpanMultiTermQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/SpanMultiTermQueryBuilder.java
index 730eebb2c5..7b469b3ef4 100644
--- a/core/src/main/java/org/elasticsearch/index/query/SpanMultiTermQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/SpanMultiTermQueryBuilder.java
@@ -81,8 +81,7 @@ public class SpanMultiTermQueryBuilder extends AbstractQueryBuilder<SpanMultiTer
builder.endObject();
}
- public static SpanMultiTermQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static SpanMultiTermQueryBuilder fromXContent(XContentParser parser) throws IOException {
String currentFieldName = null;
MultiTermQueryBuilder subQuery = null;
String queryName = null;
@@ -93,7 +92,7 @@ public class SpanMultiTermQueryBuilder extends AbstractQueryBuilder<SpanMultiTer
currentFieldName = parser.currentName();
} else if (token == XContentParser.Token.START_OBJECT) {
if (MATCH_FIELD.match(currentFieldName)) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof MultiTermQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(),
"[span_multi] [" + MATCH_FIELD.getPreferredName() + "] must be of type multi term query");
diff --git a/core/src/main/java/org/elasticsearch/index/query/SpanNearQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/SpanNearQueryBuilder.java
index bc022e8119..a7e4c77532 100644
--- a/core/src/main/java/org/elasticsearch/index/query/SpanNearQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/SpanNearQueryBuilder.java
@@ -143,9 +143,7 @@ public class SpanNearQueryBuilder extends AbstractQueryBuilder<SpanNearQueryBuil
builder.endObject();
}
- public static SpanNearQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static SpanNearQueryBuilder fromXContent(XContentParser parser) throws IOException {
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
Integer slop = null;
boolean inOrder = SpanNearQueryBuilder.DEFAULT_IN_ORDER;
@@ -161,7 +159,7 @@ public class SpanNearQueryBuilder extends AbstractQueryBuilder<SpanNearQueryBuil
} else if (token == XContentParser.Token.START_ARRAY) {
if (CLAUSES_FIELD.match(currentFieldName)) {
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof SpanQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(), "spanNear [clauses] must be of type span query");
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/SpanNotQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/SpanNotQueryBuilder.java
index 865dbc8ae5..ca1d30ccbd 100644
--- a/core/src/main/java/org/elasticsearch/index/query/SpanNotQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/SpanNotQueryBuilder.java
@@ -160,9 +160,7 @@ public class SpanNotQueryBuilder extends AbstractQueryBuilder<SpanNotQueryBuilde
builder.endObject();
}
- public static SpanNotQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static SpanNotQueryBuilder fromXContent(XContentParser parser) throws IOException {
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
SpanQueryBuilder include = null;
@@ -181,13 +179,13 @@ public class SpanNotQueryBuilder extends AbstractQueryBuilder<SpanNotQueryBuilde
currentFieldName = parser.currentName();
} else if (token == XContentParser.Token.START_OBJECT) {
if (INCLUDE_FIELD.match(currentFieldName)) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof SpanQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(), "spanNot [include] must be of type span query");
}
include = (SpanQueryBuilder) query;
} else if (EXCLUDE_FIELD.match(currentFieldName)) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof SpanQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(), "spanNot [exclude] must be of type span query");
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/SpanOrQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/SpanOrQueryBuilder.java
index afe315c61f..2ed46c7f5e 100644
--- a/core/src/main/java/org/elasticsearch/index/query/SpanOrQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/SpanOrQueryBuilder.java
@@ -97,9 +97,7 @@ public class SpanOrQueryBuilder extends AbstractQueryBuilder<SpanOrQueryBuilder>
builder.endObject();
}
- public static SpanOrQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static SpanOrQueryBuilder fromXContent(XContentParser parser) throws IOException {
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
String queryName = null;
@@ -113,7 +111,7 @@ public class SpanOrQueryBuilder extends AbstractQueryBuilder<SpanOrQueryBuilder>
} else if (token == XContentParser.Token.START_ARRAY) {
if (CLAUSES_FIELD.match(currentFieldName)) {
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof SpanQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(), "spanOr [clauses] must be of type span query");
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/SpanTermQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/SpanTermQueryBuilder.java
index 67319dfe6e..8c0e56266f 100644
--- a/core/src/main/java/org/elasticsearch/index/query/SpanTermQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/SpanTermQueryBuilder.java
@@ -91,8 +91,7 @@ public class SpanTermQueryBuilder extends BaseTermQueryBuilder<SpanTermQueryBuil
return new SpanTermQuery(term);
}
- public static SpanTermQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException, ParsingException {
- XContentParser parser = parseContext.parser();
+ public static SpanTermQueryBuilder fromXContent(XContentParser parser) throws IOException, ParsingException {
String fieldName = null;
Object value = null;
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
diff --git a/core/src/main/java/org/elasticsearch/index/query/SpanWithinQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/SpanWithinQueryBuilder.java
index 7a7cf7f040..714ad02c18 100644
--- a/core/src/main/java/org/elasticsearch/index/query/SpanWithinQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/SpanWithinQueryBuilder.java
@@ -104,9 +104,7 @@ public class SpanWithinQueryBuilder extends AbstractQueryBuilder<SpanWithinQuery
builder.endObject();
}
- public static SpanWithinQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static SpanWithinQueryBuilder fromXContent(XContentParser parser) throws IOException {
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
String queryName = null;
SpanQueryBuilder big = null;
@@ -119,13 +117,13 @@ public class SpanWithinQueryBuilder extends AbstractQueryBuilder<SpanWithinQuery
currentFieldName = parser.currentName();
} else if (token == XContentParser.Token.START_OBJECT) {
if (BIG_FIELD.match(currentFieldName)) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof SpanQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(), "span_within [big] must be of type span query");
}
big = (SpanQueryBuilder) query;
} else if (LITTLE_FIELD.match(currentFieldName)) {
- QueryBuilder query = parseContext.parseInnerQueryBuilder();
+ QueryBuilder query = parseInnerQueryBuilder(parser);
if (query instanceof SpanQueryBuilder == false) {
throw new ParsingException(parser.getTokenLocation(), "span_within [little] must be of type span query");
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/TermQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/TermQueryBuilder.java
index fe6282a257..8ee7c699c0 100644
--- a/core/src/main/java/org/elasticsearch/index/query/TermQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/TermQueryBuilder.java
@@ -82,9 +82,7 @@ public class TermQueryBuilder extends BaseTermQueryBuilder<TermQueryBuilder> {
super(in);
}
- public static TermQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static TermQueryBuilder fromXContent(XContentParser parser) throws IOException {
String queryName = null;
String fieldName = null;
Object value = null;
@@ -94,8 +92,6 @@ public class TermQueryBuilder extends BaseTermQueryBuilder<TermQueryBuilder> {
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
fieldName = currentFieldName;
diff --git a/core/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java
index 620004e206..96873bb600 100644
--- a/core/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java
@@ -19,8 +19,8 @@
package org.elasticsearch.index.query;
-import org.apache.lucene.search.TermInSetQuery;
import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermInSetQuery;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefBuilder;
import org.elasticsearch.action.get.GetRequest;
@@ -205,7 +205,7 @@ public class TermsQueryBuilder extends AbstractQueryBuilder<TermsQueryBuilder> {
if (values instanceof List<?>) {
list = (List<?>) values;
} else {
- ArrayList<Object> arrayList = new ArrayList<Object>();
+ ArrayList<Object> arrayList = new ArrayList<>();
for (Object o : values) {
arrayList.add(o);
}
@@ -266,11 +266,13 @@ public class TermsQueryBuilder extends AbstractQueryBuilder<TermsQueryBuilder> {
}
final BytesReference bytes = bytesOut.bytes();
return new AbstractList<Object>() {
+ @Override
public Object get(int i) {
final int startOffset = i == 0 ? 0 : endOffsets[i-1];
final int endOffset = endOffsets[i];
return bytes.slice(startOffset, endOffset - startOffset).toBytesRef();
}
+ @Override
public int size() {
return endOffsets.length;
}
@@ -320,9 +322,7 @@ public class TermsQueryBuilder extends AbstractQueryBuilder<TermsQueryBuilder> {
builder.endObject();
}
- public static TermsQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static TermsQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
List<Object> values = null;
TermsLookup termsLookup = null;
@@ -335,8 +335,6 @@ public class TermsQueryBuilder extends AbstractQueryBuilder<TermsQueryBuilder> {
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_ARRAY) {
if (fieldName != null) {
throw new ParsingException(parser.getTokenLocation(),
diff --git a/core/src/main/java/org/elasticsearch/index/query/TypeQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/TypeQueryBuilder.java
index fc4df8efa8..d53736a383 100644
--- a/core/src/main/java/org/elasticsearch/index/query/TypeQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/TypeQueryBuilder.java
@@ -80,13 +80,10 @@ public class TypeQueryBuilder extends AbstractQueryBuilder<TypeQueryBuilder> {
builder.endObject();
}
- public static TypeQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static TypeQueryBuilder fromXContent(XContentParser parser) throws IOException {
BytesRef type = null;
-
String queryName = null;
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
-
String currentFieldName = null;
XContentParser.Token token;
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
diff --git a/core/src/main/java/org/elasticsearch/index/query/WildcardQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/WildcardQueryBuilder.java
index 006f55c871..8391580421 100644
--- a/core/src/main/java/org/elasticsearch/index/query/WildcardQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/WildcardQueryBuilder.java
@@ -132,8 +132,7 @@ public class WildcardQueryBuilder extends AbstractQueryBuilder<WildcardQueryBuil
builder.endObject();
}
- public static WildcardQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
+ public static WildcardQueryBuilder fromXContent(XContentParser parser) throws IOException {
String fieldName = null;
String rewrite = null;
String value = null;
@@ -144,8 +143,6 @@ public class WildcardQueryBuilder extends AbstractQueryBuilder<WildcardQueryBuil
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
currentFieldName = parser.currentName();
- } else if (parseContext.isDeprecatedSetting(currentFieldName)) {
- // skip
} else if (token == XContentParser.Token.START_OBJECT) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, currentFieldName);
fieldName = currentFieldName;
diff --git a/core/src/main/java/org/elasticsearch/index/query/WrapperQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/WrapperQueryBuilder.java
index 779efaa441..f0dad4cadd 100644
--- a/core/src/main/java/org/elasticsearch/index/query/WrapperQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/WrapperQueryBuilder.java
@@ -115,9 +115,7 @@ public class WrapperQueryBuilder extends AbstractQueryBuilder<WrapperQueryBuilde
builder.endObject();
}
- public static WrapperQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static WrapperQueryBuilder fromXContent(XContentParser parser) throws IOException {
XContentParser.Token token = parser.nextToken();
if (token != XContentParser.Token.FIELD_NAME) {
throw new ParsingException(parser.getTokenLocation(), "[wrapper] query malformed");
@@ -161,9 +159,8 @@ public class WrapperQueryBuilder extends AbstractQueryBuilder<WrapperQueryBuilde
@Override
protected QueryBuilder doRewrite(QueryRewriteContext context) throws IOException {
try (XContentParser qSourceParser = XContentFactory.xContent(source).createParser(context.getXContentRegistry(), source)) {
- QueryParseContext parseContext = context.newParseContext(qSourceParser);
- final QueryBuilder queryBuilder = parseContext.parseInnerQueryBuilder();
+ final QueryBuilder queryBuilder = parseInnerQueryBuilder(qSourceParser);
if (boost() != DEFAULT_BOOST || queryName() != null) {
final BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
boolQueryBuilder.must(queryBuilder);
diff --git a/core/src/main/java/org/elasticsearch/index/query/functionscore/DecayFunctionParser.java b/core/src/main/java/org/elasticsearch/index/query/functionscore/DecayFunctionParser.java
index 5a767ecc3a..6fe41471e2 100644
--- a/core/src/main/java/org/elasticsearch/index/query/functionscore/DecayFunctionParser.java
+++ b/core/src/main/java/org/elasticsearch/index/query/functionscore/DecayFunctionParser.java
@@ -25,7 +25,6 @@ import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentParser;
-import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.plugins.SearchPlugin;
import org.elasticsearch.search.MultiValueMode;
import org.elasticsearch.search.SearchModule;
@@ -97,8 +96,7 @@ public final class DecayFunctionParser<DFB extends DecayFunctionBuilder<DFB>> im
* </pre>
*/
@Override
- public DFB fromXContent(QueryParseContext context) throws IOException, ParsingException {
- XContentParser parser = context.parser();
+ public DFB fromXContent(XContentParser parser) throws IOException, ParsingException {
String currentFieldName;
XContentParser.Token token;
MultiValueMode multiValueMode = DecayFunctionBuilder.DEFAULT_MULTI_VALUE_MODE;
diff --git a/core/src/main/java/org/elasticsearch/index/query/functionscore/FieldValueFactorFunctionBuilder.java b/core/src/main/java/org/elasticsearch/index/query/functionscore/FieldValueFactorFunctionBuilder.java
index d9cef5522e..19e35ddc4e 100644
--- a/core/src/main/java/org/elasticsearch/index/query/functionscore/FieldValueFactorFunctionBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/functionscore/FieldValueFactorFunctionBuilder.java
@@ -29,7 +29,6 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
import org.elasticsearch.index.mapper.MappedFieldType;
-import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.query.QueryShardContext;
import java.io.IOException;
@@ -157,9 +156,8 @@ public class FieldValueFactorFunctionBuilder extends ScoreFunctionBuilder<FieldV
return new FieldValueFactorFunction(field, factor, modifier, missing, fieldData);
}
- public static FieldValueFactorFunctionBuilder fromXContent(QueryParseContext parseContext)
+ public static FieldValueFactorFunctionBuilder fromXContent(XContentParser parser)
throws IOException, ParsingException {
- XContentParser parser = parseContext.parser();
String currentFieldName = null;
String field = null;
float boostFactor = FieldValueFactorFunctionBuilder.DEFAULT_FACTOR;
diff --git a/core/src/main/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilder.java
index a84aa678e5..7d26c1310a 100644
--- a/core/src/main/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilder.java
@@ -39,7 +39,6 @@ import org.elasticsearch.index.query.AbstractQueryBuilder;
import org.elasticsearch.index.query.InnerHitContextBuilder;
import org.elasticsearch.index.query.MatchAllQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
-import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.query.QueryRewriteContext;
import org.elasticsearch.index.query.QueryShardContext;
@@ -435,9 +434,7 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
InnerHitContextBuilder.extractInnerHits(query(), innerHits);
}
- public static FunctionScoreQueryBuilder fromXContent(QueryParseContext parseContext) throws IOException {
- XContentParser parser = parseContext.parser();
-
+ public static FunctionScoreQueryBuilder fromXContent(XContentParser parser) throws IOException {
QueryBuilder query = null;
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
String queryName = null;
@@ -464,7 +461,7 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
throw new ParsingException(parser.getTokenLocation(), "failed to parse [{}] query. [query] is already defined.",
NAME);
}
- query = parseContext.parseInnerQueryBuilder();
+ query = parseInnerQueryBuilder(parser);
} else {
if (singleFunctionFound) {
throw new ParsingException(parser.getTokenLocation(),
@@ -480,7 +477,7 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
singleFunctionName = currentFieldName;
ScoreFunctionBuilder<?> scoreFunction = parser.namedObject(ScoreFunctionBuilder.class, currentFieldName,
- parseContext);
+ null);
filterFunctionBuilders.add(new FunctionScoreQueryBuilder.FilterFunctionBuilder(scoreFunction));
}
} else if (token == XContentParser.Token.START_ARRAY) {
@@ -490,7 +487,7 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
handleMisplacedFunctionsDeclaration(parser.getTokenLocation(), errorString);
}
functionArrayFound = true;
- currentFieldName = parseFiltersAndFunctions(parseContext, filterFunctionBuilders);
+ currentFieldName = parseFiltersAndFunctions(parser, filterFunctionBuilders);
} else {
throw new ParsingException(parser.getTokenLocation(), "failed to parse [{}] query. array [{}] is not supported",
NAME, currentFieldName);
@@ -557,11 +554,10 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
MISPLACED_FUNCTION_MESSAGE_PREFIX + errorString);
}
- private static String parseFiltersAndFunctions(QueryParseContext parseContext,
+ private static String parseFiltersAndFunctions(XContentParser parser,
List<FunctionScoreQueryBuilder.FilterFunctionBuilder> filterFunctionBuilders) throws IOException {
String currentFieldName = null;
XContentParser.Token token;
- XContentParser parser = parseContext.parser();
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
QueryBuilder filter = null;
ScoreFunctionBuilder<?> scoreFunction = null;
@@ -576,14 +572,14 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
currentFieldName = parser.currentName();
} else if (token == XContentParser.Token.START_OBJECT) {
if (FILTER_FIELD.match(currentFieldName)) {
- filter = parseContext.parseInnerQueryBuilder();
+ filter = parseInnerQueryBuilder(parser);
} else {
if (scoreFunction != null) {
throw new ParsingException(parser.getTokenLocation(),
"failed to parse function_score functions. already found [{}], now encountering [{}].",
scoreFunction.getName(), currentFieldName);
}
- scoreFunction = parser.namedObject(ScoreFunctionBuilder.class, currentFieldName, parseContext);
+ scoreFunction = parser.namedObject(ScoreFunctionBuilder.class, currentFieldName, null);
}
} else if (token.isValue()) {
if (WEIGHT_FIELD.match(currentFieldName)) {
diff --git a/core/src/main/java/org/elasticsearch/index/query/functionscore/RandomScoreFunctionBuilder.java b/core/src/main/java/org/elasticsearch/index/query/functionscore/RandomScoreFunctionBuilder.java
index f2c92cc7d1..6852a1592a 100644
--- a/core/src/main/java/org/elasticsearch/index/query/functionscore/RandomScoreFunctionBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/functionscore/RandomScoreFunctionBuilder.java
@@ -28,9 +28,7 @@ import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.fielddata.IndexFieldData;
import org.elasticsearch.index.mapper.IdFieldMapper;
import org.elasticsearch.index.mapper.MappedFieldType;
-import org.elasticsearch.index.mapper.MapperService;
import org.elasticsearch.index.mapper.UidFieldMapper;
-import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.query.QueryShardContext;
import java.io.IOException;
@@ -147,9 +145,8 @@ public class RandomScoreFunctionBuilder extends ScoreFunctionBuilder<RandomScore
return Long.hashCode(value);
}
- public static RandomScoreFunctionBuilder fromXContent(QueryParseContext parseContext)
+ public static RandomScoreFunctionBuilder fromXContent(XContentParser parser)
throws IOException, ParsingException {
- XContentParser parser = parseContext.parser();
RandomScoreFunctionBuilder randomScoreFunctionBuilder = new RandomScoreFunctionBuilder();
String currentFieldName = null;
XContentParser.Token token;
diff --git a/core/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionParser.java b/core/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionParser.java
index 1a2fad90c4..8914aca131 100644
--- a/core/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionParser.java
+++ b/core/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionParser.java
@@ -19,7 +19,7 @@
package org.elasticsearch.index.query.functionscore;
-import org.elasticsearch.index.query.QueryParseContext;
+import org.elasticsearch.common.xcontent.XContentParser;
import java.io.IOException;
@@ -28,5 +28,5 @@ import java.io.IOException;
*/
@FunctionalInterface
public interface ScoreFunctionParser<FB extends ScoreFunctionBuilder<FB>> {
- FB fromXContent(QueryParseContext context) throws IOException;
+ FB fromXContent(XContentParser parser) throws IOException;
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/functionscore/ScriptScoreFunctionBuilder.java b/core/src/main/java/org/elasticsearch/index/query/functionscore/ScriptScoreFunctionBuilder.java
index 7c66a7de99..60f3918863 100644
--- a/core/src/main/java/org/elasticsearch/index/query/functionscore/ScriptScoreFunctionBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/functionscore/ScriptScoreFunctionBuilder.java
@@ -26,11 +26,9 @@ import org.elasticsearch.common.lucene.search.function.ScoreFunction;
import org.elasticsearch.common.lucene.search.function.ScriptScoreFunction;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentParser;
-import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.query.QueryShardContext;
import org.elasticsearch.index.query.QueryShardException;
import org.elasticsearch.script.Script;
-import org.elasticsearch.script.ScriptContext;
import org.elasticsearch.script.SearchScript;
import java.io.IOException;
@@ -102,9 +100,8 @@ public class ScriptScoreFunctionBuilder extends ScoreFunctionBuilder<ScriptScore
}
}
- public static ScriptScoreFunctionBuilder fromXContent(QueryParseContext parseContext)
+ public static ScriptScoreFunctionBuilder fromXContent(XContentParser parser)
throws IOException, ParsingException {
- XContentParser parser = parseContext.parser();
Script script = null;
String currentFieldName = null;
XContentParser.Token token;
diff --git a/core/src/main/java/org/elasticsearch/indices/IndicesService.java b/core/src/main/java/org/elasticsearch/indices/IndicesService.java
index eb138a0458..233e86a8f4 100644
--- a/core/src/main/java/org/elasticsearch/indices/IndicesService.java
+++ b/core/src/main/java/org/elasticsearch/indices/IndicesService.java
@@ -89,7 +89,6 @@ import org.elasticsearch.index.mapper.MappedFieldType;
import org.elasticsearch.index.mapper.MapperService;
import org.elasticsearch.index.merge.MergeStats;
import org.elasticsearch.index.query.QueryBuilder;
-import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.recovery.RecoveryStats;
import org.elasticsearch.index.refresh.RefreshStats;
import org.elasticsearch.index.search.stats.SearchStats;
@@ -140,6 +139,7 @@ import static java.util.Collections.emptyMap;
import static java.util.Collections.unmodifiableMap;
import static org.elasticsearch.common.collect.MapBuilder.newMapBuilder;
import static org.elasticsearch.common.util.CollectionUtils.arrayAsArrayList;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
public class IndicesService extends AbstractLifecycleComponent
implements IndicesClusterStateService.AllocatedIndices<IndexShard, IndexService>, IndexService.ShardStoreDeleter {
@@ -1261,7 +1261,7 @@ public class IndicesService extends AbstractLifecycleComponent
* of dependencies we pass in a function that can perform the parsing. */
CheckedFunction<byte[], QueryBuilder, IOException> filterParser = bytes -> {
try (XContentParser parser = XContentFactory.xContent(bytes).createParser(xContentRegistry, bytes)) {
- return new QueryParseContext(parser).parseInnerQueryBuilder();
+ return parseInnerQueryBuilder(parser);
}
};
String[] aliases = indexNameExpressionResolver.filteringAliases(state, index, expressions);
diff --git a/core/src/main/java/org/elasticsearch/rest/action/RestActions.java b/core/src/main/java/org/elasticsearch/rest/action/RestActions.java
index 15199c5a92..295ae7418c 100644
--- a/core/src/main/java/org/elasticsearch/rest/action/RestActions.java
+++ b/core/src/main/java/org/elasticsearch/rest/action/RestActions.java
@@ -26,6 +26,7 @@ import org.elasticsearch.action.support.broadcast.BroadcastResponse;
import org.elasticsearch.action.support.nodes.BaseNodeResponse;
import org.elasticsearch.action.support.nodes.BaseNodesResponse;
import org.elasticsearch.common.ParseField;
+import org.elasticsearch.common.ParsingException;
import org.elasticsearch.common.lucene.uid.Versions;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.ToXContent.Params;
@@ -34,7 +35,6 @@ import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.query.Operator;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.query.QueryStringQueryBuilder;
import org.elasticsearch.rest.BytesRestResponse;
import org.elasticsearch.rest.RestChannel;
@@ -45,6 +45,8 @@ import org.elasticsearch.rest.RestStatus;
import java.io.IOException;
import java.util.List;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
+
public class RestActions {
public static final ParseField _SHARDS_FIELD = new ParseField("_shards");
@@ -201,8 +203,7 @@ public class RestActions {
}
public static QueryBuilder getQueryContent(XContentParser requestParser) {
- QueryParseContext context = new QueryParseContext(requestParser);
- return context.parseTopLevelQueryBuilder();
+ return parseTopLevelQueryBuilder(requestParser);
}
/**
@@ -232,4 +233,28 @@ public class RestActions {
}
+ /**
+ * Parses a top level query including the query element that wraps it
+ */
+ private static QueryBuilder parseTopLevelQueryBuilder(XContentParser parser) {
+ try {
+ QueryBuilder queryBuilder = null;
+ for (XContentParser.Token token = parser.nextToken(); token != XContentParser.Token.END_OBJECT; token = parser.nextToken()) {
+ if (token == XContentParser.Token.FIELD_NAME) {
+ String fieldName = parser.currentName();
+ if ("query".equals(fieldName)) {
+ queryBuilder = parseInnerQueryBuilder(parser);
+ } else {
+ throw new ParsingException(parser.getTokenLocation(), "request does not support [" + parser.currentName() + "]");
+ }
+ }
+ }
+ return queryBuilder;
+ } catch (ParsingException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ParsingException(parser == null ? null : parser.getTokenLocation(), "Failed to parse", e);
+ }
+ }
+
}
diff --git a/core/src/main/java/org/elasticsearch/search/SearchModule.java b/core/src/main/java/org/elasticsearch/search/SearchModule.java
index 87d937c099..2a72c1904e 100644
--- a/core/src/main/java/org/elasticsearch/search/SearchModule.java
+++ b/core/src/main/java/org/elasticsearch/search/SearchModule.java
@@ -54,7 +54,6 @@ import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.NestedQueryBuilder;
import org.elasticsearch.index.query.PrefixQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
-import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.query.QueryStringQueryBuilder;
import org.elasticsearch.index.query.RangeQueryBuilder;
import org.elasticsearch.index.query.RegexpQueryBuilder;
@@ -606,7 +605,7 @@ public class SearchModule {
// TODO remove funky contexts
namedXContents.add(new NamedXContentRegistry.Entry(
ScoreFunctionBuilder.class, scoreFunction.getName(),
- (XContentParser p, Object c) -> scoreFunction.getParser().fromXContent((QueryParseContext) c)));
+ (XContentParser p, Object c) -> scoreFunction.getParser().fromXContent(p)));
}
private void registerValueFormats() {
@@ -751,7 +750,7 @@ public class SearchModule {
private void registerQuery(QuerySpec<?> spec) {
namedWriteables.add(new NamedWriteableRegistry.Entry(QueryBuilder.class, spec.getName().getPreferredName(), spec.getReader()));
namedXContents.add(new NamedXContentRegistry.Entry(QueryBuilder.class, spec.getName(),
- (p, c) -> spec.getParser().fromXContent((QueryParseContext) c)));
+ (p, c) -> spec.getParser().fromXContent(p)));
}
public FetchPhase getFetchPhase() {
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/AggregatorFactories.java b/core/src/main/java/org/elasticsearch/search/aggregations/AggregatorFactories.java
index d635952ec1..90b1c7e58c 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/AggregatorFactories.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/AggregatorFactories.java
@@ -343,8 +343,8 @@ public class AggregatorFactories {
aggBuildersMap.put(aggBuilder.name, aggBuilder);
}
List<PipelineAggregationBuilder> orderedPipelineAggregatorrs = new LinkedList<>();
- List<PipelineAggregationBuilder> unmarkedBuilders = new ArrayList<PipelineAggregationBuilder>(pipelineAggregatorBuilders);
- Set<PipelineAggregationBuilder> temporarilyMarked = new HashSet<PipelineAggregationBuilder>();
+ List<PipelineAggregationBuilder> unmarkedBuilders = new ArrayList<>(pipelineAggregatorBuilders);
+ Set<PipelineAggregationBuilder> temporarilyMarked = new HashSet<>();
while (!unmarkedBuilders.isEmpty()) {
PipelineAggregationBuilder builder = unmarkedBuilders.get(0);
resolvePipelineAggregatorOrder(aggBuildersMap, pipelineAggregatorBuildersMap, orderedPipelineAggregatorrs, unmarkedBuilders,
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregator.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregator.java
index 6732db9cec..8e6fffbd47 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregator.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/adjacency/AdjacencyMatrixAggregator.java
@@ -27,10 +27,10 @@ import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.common.lucene.Lucene;
+import org.elasticsearch.common.xcontent.ObjectParser.NamedObjectParser;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentParser;
-import org.elasticsearch.common.xcontent.ObjectParser.NamedObjectParser;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.search.aggregations.Aggregator;
@@ -48,15 +48,17 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
+
/**
* Aggregation for adjacency matrices.
- *
+ *
* NOTE! This is an experimental class.
- *
+ *
* TODO the aggregation produces a sparse response but in the
* computation it uses a non-sparse structure (an array of Bits
* objects). This could be changed to a sparse structure in future.
- *
+ *
*/
public class AdjacencyMatrixAggregator extends BucketsAggregator {
@@ -65,11 +67,11 @@ public class AdjacencyMatrixAggregator extends BucketsAggregator {
protected static class KeyedFilter implements Writeable, ToXContent {
private final String key;
private final QueryBuilder filter;
-
- public static final NamedObjectParser<KeyedFilter, QueryParseContext> PARSER =
- (XContentParser p, QueryParseContext c, String name) ->
- new KeyedFilter(name, c.parseInnerQueryBuilder());
-
+
+ public static final NamedObjectParser<KeyedFilter, QueryParseContext> PARSER =
+ (XContentParser p, QueryParseContext c, String name) ->
+ new KeyedFilter(name, parseInnerQueryBuilder(p));
+
public KeyedFilter(String key, QueryBuilder filter) {
if (key == null) {
@@ -134,8 +136,8 @@ public class AdjacencyMatrixAggregator extends BucketsAggregator {
private final int totalNumIntersections;
private final String separator;
- public AdjacencyMatrixAggregator(String name, AggregatorFactories factories, String separator, String[] keys,
- Weight[] filters, SearchContext context, Aggregator parent, List<PipelineAggregator> pipelineAggregators,
+ public AdjacencyMatrixAggregator(String name, AggregatorFactories factories, String separator, String[] keys,
+ Weight[] filters, SearchContext context, Aggregator parent, List<PipelineAggregator> pipelineAggregators,
Map<String, Object> metaData) throws IOException {
super(name, factories, context, parent, pipelineAggregators, metaData);
this.separator = separator;
@@ -207,9 +209,9 @@ public class AdjacencyMatrixAggregator extends BucketsAggregator {
// a date-histogram where we will look for transactions over time and can expect many
// empty buckets.
if (docCount > 0) {
- InternalAdjacencyMatrix.InternalBucket bucket = new InternalAdjacencyMatrix.InternalBucket(keys[i],
+ InternalAdjacencyMatrix.InternalBucket bucket = new InternalAdjacencyMatrix.InternalBucket(keys[i],
docCount, bucketAggregations(bucketOrd));
- buckets.add(bucket);
+ buckets.add(bucket);
}
}
int pos = keys.length;
@@ -220,7 +222,7 @@ public class AdjacencyMatrixAggregator extends BucketsAggregator {
// Empty buckets are not returned due to potential for very sparse matrices
if (docCount > 0) {
String intersectKey = keys[i] + separator + keys[j];
- InternalAdjacencyMatrix.InternalBucket bucket = new InternalAdjacencyMatrix.InternalBucket(intersectKey,
+ InternalAdjacencyMatrix.InternalBucket bucket = new InternalAdjacencyMatrix.InternalBucket(intersectKey,
docCount, bucketAggregations(bucketOrd));
buckets.add(bucket);
}
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FilterAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FilterAggregationBuilder.java
index 19d3f32f39..d3f5696bfc 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FilterAggregationBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filter/FilterAggregationBuilder.java
@@ -32,6 +32,8 @@ import org.elasticsearch.search.internal.SearchContext;
import java.io.IOException;
import java.util.Objects;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
+
public class FilterAggregationBuilder extends AbstractAggregationBuilder<FilterAggregationBuilder> {
public static final String NAME = "filter";
@@ -83,7 +85,7 @@ public class FilterAggregationBuilder extends AbstractAggregationBuilder<FilterA
}
public static FilterAggregationBuilder parse(String aggregationName, QueryParseContext context) throws IOException {
- QueryBuilder filter = context.parseInnerQueryBuilder();
+ QueryBuilder filter = parseInnerQueryBuilder(context.parser());
return new FilterAggregationBuilder(aggregationName, filter);
}
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filters/FiltersAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filters/FiltersAggregationBuilder.java
index b80ce74c3d..7c1e9756a0 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filters/FiltersAggregationBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/filters/FiltersAggregationBuilder.java
@@ -40,6 +40,8 @@ import java.util.Collections;
import java.util.List;
import java.util.Objects;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
+
public class FiltersAggregationBuilder extends AbstractAggregationBuilder<FiltersAggregationBuilder> {
public static final String NAME = "filters";
@@ -171,7 +173,7 @@ public class FiltersAggregationBuilder extends AbstractAggregationBuilder<Filter
throws IOException {
List<KeyedFilter> rewrittenFilters = new ArrayList<>(filters.size());
for(KeyedFilter kf : filters) {
- rewrittenFilters.add(new KeyedFilter(kf.key(), QueryBuilder.rewriteQuery(kf.filter(),
+ rewrittenFilters.add(new KeyedFilter(kf.key(), QueryBuilder.rewriteQuery(kf.filter(),
context.getQueryShardContext())));
}
return new FiltersAggregatorFactory(name, rewrittenFilters, keyed, otherBucket, otherBucketKey, context, parent,
@@ -236,7 +238,7 @@ public class FiltersAggregationBuilder extends AbstractAggregationBuilder<Filter
if (token == XContentParser.Token.FIELD_NAME) {
key = parser.currentName();
} else {
- QueryBuilder filter = context.parseInnerQueryBuilder();
+ QueryBuilder filter = parseInnerQueryBuilder(context.parser());
keyedFilters.add(new FiltersAggregator.KeyedFilter(key, filter));
}
}
@@ -248,7 +250,7 @@ public class FiltersAggregationBuilder extends AbstractAggregationBuilder<Filter
if (FILTERS_FIELD.match(currentFieldName)) {
nonKeyedFilters = new ArrayList<>();
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
- QueryBuilder filter = context.parseInnerQueryBuilder();
+ QueryBuilder filter = parseInnerQueryBuilder(context.parser());
nonKeyedFilters.add(filter);
}
} else {
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java
index 72825dbd98..4f297a73b8 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTermsAggregationBuilder.java
@@ -49,6 +49,8 @@ import org.elasticsearch.search.internal.SearchContext;
import java.io.IOException;
import java.util.Objects;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
+
public class SignificantTermsAggregationBuilder extends ValuesSourceAggregationBuilder<ValuesSource, SignificantTermsAggregationBuilder> {
public static final String NAME = "significant_terms";
@@ -75,7 +77,7 @@ public class SignificantTermsAggregationBuilder extends ValuesSourceAggregationB
parser.declareString(SignificantTermsAggregationBuilder::executionHint, TermsAggregationBuilder.EXECUTION_HINT_FIELD_NAME);
parser.declareObject(SignificantTermsAggregationBuilder::backgroundFilter,
- (p, context) -> context.parseInnerQueryBuilder(),
+ (p, context) -> parseInnerQueryBuilder(p),
SignificantTermsAggregationBuilder.BACKGROUND_FILTER);
parser.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(v, b.includeExclude())),
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTextAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTextAggregationBuilder.java
index c0fecd8be4..a55d89bbc5 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTextAggregationBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/bucket/significant/SignificantTextAggregationBuilder.java
@@ -25,6 +25,7 @@ import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.xcontent.ObjectParser;
import org.elasticsearch.common.xcontent.ParseFieldRegistry;
import org.elasticsearch.common.xcontent.XContentBuilder;
+import org.elasticsearch.index.query.AbstractQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
@@ -54,7 +55,7 @@ public class SignificantTextAggregationBuilder extends AbstractAggregationBuilde
static final ParseField FILTER_DUPLICATE_TEXT_FIELD_NAME = new ParseField(
"filter_duplicate_text");
- static final TermsAggregator.BucketCountThresholds DEFAULT_BUCKET_COUNT_THRESHOLDS =
+ static final TermsAggregator.BucketCountThresholds DEFAULT_BUCKET_COUNT_THRESHOLDS =
SignificantTermsAggregationBuilder.DEFAULT_BUCKET_COUNT_THRESHOLDS;
static final SignificanceHeuristic DEFAULT_SIGNIFICANCE_HEURISTIC = SignificantTermsAggregationBuilder.DEFAULT_SIGNIFICANCE_HEURISTIC;
@@ -85,15 +86,15 @@ public class SignificantTextAggregationBuilder extends AbstractAggregationBuilde
TermsAggregationBuilder.REQUIRED_SIZE_FIELD_NAME);
parser.declareString(SignificantTextAggregationBuilder::fieldName, FIELD_NAME);
-
+
parser.declareStringArray(SignificantTextAggregationBuilder::sourceFieldNames, SOURCE_FIELDS_NAME);
-
+
parser.declareBoolean(SignificantTextAggregationBuilder::filterDuplicateText,
FILTER_DUPLICATE_TEXT_FIELD_NAME);
parser.declareObject(SignificantTextAggregationBuilder::backgroundFilter,
- (p, context) -> context.parseInnerQueryBuilder(),
+ (p, context) -> AbstractQueryBuilder.parseInnerQueryBuilder(p),
SignificantTermsAggregationBuilder.BACKGROUND_FILTER);
parser.declareField((b, v) -> b.includeExclude(IncludeExclude.merge(v, b.includeExclude())),
@@ -129,20 +130,20 @@ public class SignificantTextAggregationBuilder extends AbstractAggregationBuilde
public TermsAggregator.BucketCountThresholds bucketCountThresholds() {
return bucketCountThresholds;
}
-
-
+
+
@Override
public SignificantTextAggregationBuilder subAggregations(Builder subFactories) {
throw new AggregationInitializationException("Aggregator [" + name + "] of type ["
+ getType() + "] cannot accept sub-aggregations");
- }
+ }
@Override
public SignificantTextAggregationBuilder subAggregation(AggregationBuilder aggregation) {
throw new AggregationInitializationException("Aggregator [" + name + "] of type ["
+ getType() + "] cannot accept sub-aggregations");
- }
-
+ }
+
public SignificantTextAggregationBuilder bucketCountThresholds(
TermsAggregator.BucketCountThresholds bucketCountThresholds) {
if (bucketCountThresholds == null) {
@@ -190,18 +191,18 @@ public class SignificantTextAggregationBuilder extends AbstractAggregationBuilde
return this;
}
-
+
/**
* Selects the fields to load from _source JSON and analyze.
- * If none are specified, the indexed "fieldName" value is assumed
+ * If none are specified, the indexed "fieldName" value is assumed
* to also be the name of the JSON field holding the value
*/
public SignificantTextAggregationBuilder sourceFieldNames(List<String> names) {
this.sourceFieldNames = names.toArray(new String [names.size()]);
return this;
}
-
-
+
+
/**
* Control if duplicate paragraphs of text should try be filtered from the
* statistical text analysis. Can improve results but slows down analysis.
@@ -288,7 +289,7 @@ public class SignificantTextAggregationBuilder extends AbstractAggregationBuilde
* @param fieldName
* the name of the text field that will be the subject of this
* aggregation
- *
+ *
*/
public SignificantTextAggregationBuilder(String name, String fieldName) {
super(name);
@@ -344,7 +345,7 @@ public class SignificantTextAggregationBuilder extends AbstractAggregationBuilde
if (sourceFieldNames != null) {
builder.array(SOURCE_FIELDS_NAME.getPreferredName(), sourceFieldNames);
}
-
+
if (filterDuplicateText) {
builder.field(FILTER_DUPLICATE_TEXT_FIELD_NAME.getPreferredName(), filterDuplicateText);
}
@@ -356,7 +357,7 @@ public class SignificantTextAggregationBuilder extends AbstractAggregationBuilde
includeExclude.toXContent(builder, params);
}
significanceHeuristic.toXContent(builder, params);
-
+
builder.endObject();
return builder;
}
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/tophits/TopHitsAggregationBuilder.java b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/tophits/TopHitsAggregationBuilder.java
index 2739427cfe..c131ecfee1 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/metrics/tophits/TopHitsAggregationBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/metrics/tophits/TopHitsAggregationBuilder.java
@@ -29,7 +29,6 @@ import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.query.QueryShardContext;
import org.elasticsearch.script.Script;
-import org.elasticsearch.script.ScriptContext;
import org.elasticsearch.script.SearchScript;
import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationInitializationException;
@@ -671,9 +670,9 @@ public class TopHitsAggregationBuilder extends AbstractAggregationBuilder<TopHit
}
factory.scriptFields(scriptFields);
} else if (SearchSourceBuilder.HIGHLIGHT_FIELD.match(currentFieldName)) {
- factory.highlighter(HighlightBuilder.fromXContent(context));
+ factory.highlighter(HighlightBuilder.fromXContent(parser));
} else if (SearchSourceBuilder.SORT_FIELD.match(currentFieldName)) {
- List<SortBuilder<?>> sorts = SortBuilder.fromXContent(context);
+ List<SortBuilder<?>> sorts = SortBuilder.fromXContent(parser);
factory.sorts(sorts);
} else {
throw new ParsingException(parser.getTokenLocation(), "Unknown key for a " + token + " in [" + currentFieldName + "].",
@@ -696,7 +695,7 @@ public class TopHitsAggregationBuilder extends AbstractAggregationBuilder<TopHit
}
factory.fieldDataFields(fieldDataFields);
} else if (SearchSourceBuilder.SORT_FIELD.match(currentFieldName)) {
- List<SortBuilder<?>> sorts = SortBuilder.fromXContent(context);
+ List<SortBuilder<?>> sorts = SortBuilder.fromXContent(parser);
factory.sorts(sorts);
} else if (SearchSourceBuilder._SOURCE_FIELD.match(currentFieldName)) {
factory.fetchSource(FetchSourceContext.fromXContent(context.parser()));
diff --git a/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java b/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java
index be39ce3698..99f74d1f8e 100644
--- a/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java
@@ -63,6 +63,8 @@ import java.util.Collections;
import java.util.List;
import java.util.Objects;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
+
/**
* A search source builder allowing to easily build search source. Simple
* construction using
@@ -1008,15 +1010,15 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
}
} else if (token == XContentParser.Token.START_OBJECT) {
if (QUERY_FIELD.match(currentFieldName)) {
- queryBuilder = context.parseInnerQueryBuilder();
+ queryBuilder = parseInnerQueryBuilder(parser);
} else if (POST_FILTER_FIELD.match(currentFieldName)) {
- postQueryBuilder = context.parseInnerQueryBuilder();
+ postQueryBuilder = parseInnerQueryBuilder(parser);
} else if (_SOURCE_FIELD.match(currentFieldName)) {
fetchSourceContext = FetchSourceContext.fromXContent(context.parser());
} else if (SCRIPT_FIELDS_FIELD.match(currentFieldName)) {
scriptFields = new ArrayList<>();
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
- scriptFields.add(new ScriptField(context));
+ scriptFields.add(new ScriptField(parser));
}
} else if (INDICES_BOOST_FIELD.match(currentFieldName)) {
DEPRECATION_LOGGER.deprecated(
@@ -1035,11 +1037,11 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|| AGGS_FIELD.match(currentFieldName)) {
aggregations = AggregatorFactories.parseAggregators(context);
} else if (HIGHLIGHT_FIELD.match(currentFieldName)) {
- highlightBuilder = HighlightBuilder.fromXContent(context);
+ highlightBuilder = HighlightBuilder.fromXContent(parser);
} else if (SUGGEST_FIELD.match(currentFieldName)) {
suggestBuilder = SuggestBuilder.fromXContent(context.parser());
} else if (SORT_FIELD.match(currentFieldName)) {
- sorts = new ArrayList<>(SortBuilder.fromXContent(context));
+ sorts = new ArrayList<>(SortBuilder.fromXContent(parser));
} else if (RESCORE_FIELD.match(currentFieldName)) {
rescoreBuilders = new ArrayList<>();
rescoreBuilders.add(RescoreBuilder.parseFromXContent(context));
@@ -1085,7 +1087,7 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
indexBoosts.add(new IndexBoost(context));
}
} else if (SORT_FIELD.match(currentFieldName)) {
- sorts = new ArrayList<>(SortBuilder.fromXContent(context));
+ sorts = new ArrayList<>(SortBuilder.fromXContent(parser));
} else if (RESCORE_FIELD.match(currentFieldName)) {
rescoreBuilders = new ArrayList<>();
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
@@ -1373,9 +1375,8 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
out.writeBoolean(ignoreFailure);
}
- public ScriptField(QueryParseContext context) throws IOException {
+ public ScriptField(XContentParser parser) throws IOException {
boolean ignoreFailure = false;
- XContentParser parser = context.parser();
String scriptFieldName = parser.currentName();
Script script = null;
diff --git a/core/src/main/java/org/elasticsearch/search/collapse/CollapseBuilder.java b/core/src/main/java/org/elasticsearch/search/collapse/CollapseBuilder.java
index 93f4b8bf41..91dd71d8a2 100644
--- a/core/src/main/java/org/elasticsearch/search/collapse/CollapseBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/collapse/CollapseBuilder.java
@@ -61,12 +61,12 @@ public class CollapseBuilder implements Writeable, ToXContentObject {
PARSER.declareField((parser, builder, context) -> {
XContentParser.Token currentToken = parser.currentToken();
if (currentToken == XContentParser.Token.START_OBJECT) {
- builder.setInnerHits(InnerHitBuilder.fromXContent(context));
+ builder.setInnerHits(InnerHitBuilder.fromXContent(parser));
} else if (currentToken == XContentParser.Token.START_ARRAY) {
List<InnerHitBuilder> innerHitBuilders = new ArrayList<>();
for (currentToken = parser.nextToken(); currentToken != XContentParser.Token.END_ARRAY; currentToken = parser.nextToken()) {
if (currentToken == XContentParser.Token.START_OBJECT) {
- innerHitBuilders.add(InnerHitBuilder.fromXContent(context));
+ innerHitBuilders.add(InnerHitBuilder.fromXContent(parser));
} else {
throw new ParsingException(parser.getTokenLocation(), "Invalid token in inner_hits array");
}
diff --git a/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/AbstractHighlighterBuilder.java b/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/AbstractHighlighterBuilder.java
index e6e50cc37e..43e8bf1eb8 100644
--- a/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/AbstractHighlighterBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/AbstractHighlighterBuilder.java
@@ -44,6 +44,7 @@ import java.util.Objects;
import java.util.function.BiFunction;
import static org.elasticsearch.common.xcontent.ObjectParser.fromList;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
/**
* This abstract class holds parameters shared by {@link HighlightBuilder} and {@link HighlightBuilder.Field}
@@ -593,7 +594,7 @@ public abstract class AbstractHighlighterBuilder<HB extends AbstractHighlighterB
}
}
- static <HB extends AbstractHighlighterBuilder<HB>> BiFunction<QueryParseContext, HB, HB> setupParser(
+ static <HB extends AbstractHighlighterBuilder<HB>> BiFunction<XContentParser, HB, HB> setupParser(
ObjectParser<HB, QueryParseContext> parser) {
parser.declareStringArray(fromList(String.class, HB::preTags), PRE_TAGS_FIELD);
parser.declareStringArray(fromList(String.class, HB::postTags), POST_TAGS_FIELD);
@@ -620,16 +621,16 @@ public abstract class AbstractHighlighterBuilder<HB extends AbstractHighlighterB
}, OPTIONS_FIELD);
parser.declareObject(HB::highlightQuery, (XContentParser p, QueryParseContext c) -> {
try {
- return c.parseInnerQueryBuilder();
+ return parseInnerQueryBuilder(p);
} catch (IOException e) {
throw new RuntimeException("Error parsing query", e);
}
}, HIGHLIGHT_QUERY_FIELD);
- return (QueryParseContext c, HB hb) -> {
+ return (XContentParser p, HB hb) -> {
try {
- parser.parse(c.parser(), hb, c);
+ parser.parse(p, hb, null);
if (hb.preTags() != null && hb.postTags() == null) {
- throw new ParsingException(c.parser().getTokenLocation(),
+ throw new ParsingException(p.getTokenLocation(),
"pre_tags are set but post_tags are not set");
}
} catch (IOException e) {
diff --git a/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilder.java b/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilder.java
index 5e49aa7395..55310dafb0 100644
--- a/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/HighlightBuilder.java
@@ -256,7 +256,7 @@ public class HighlightBuilder extends AbstractHighlighterBuilder<HighlightBuilde
return builder;
}
- private static final BiFunction<QueryParseContext, HighlightBuilder, HighlightBuilder> PARSER;
+ private static final BiFunction<XContentParser, HighlightBuilder, HighlightBuilder> PARSER;
static {
ObjectParser<HighlightBuilder, QueryParseContext> parser = new ObjectParser<>("highlight");
parser.declareString(HighlightBuilder::tagsSchema, new ParseField("tags_schema"));
@@ -265,8 +265,8 @@ public class HighlightBuilder extends AbstractHighlighterBuilder<HighlightBuilde
FIELDS_FIELD);
PARSER = setupParser(parser);
}
- public static HighlightBuilder fromXContent(QueryParseContext c) {
- return PARSER.apply(c, new HighlightBuilder());
+ public static HighlightBuilder fromXContent(XContentParser p) {
+ return PARSER.apply(p, new HighlightBuilder());
}
public SearchContextHighlight build(QueryShardContext context) throws IOException {
@@ -284,7 +284,7 @@ public class HighlightBuilder extends AbstractHighlighterBuilder<HighlightBuilde
final SearchContextHighlight.FieldOptions.Builder fieldOptionsBuilder = new SearchContextHighlight.FieldOptions.Builder();
fieldOptionsBuilder.fragmentOffset(field.fragmentOffset);
if (field.matchedFields != null) {
- Set<String> matchedFields = new HashSet<String>(field.matchedFields.length);
+ Set<String> matchedFields = new HashSet<>(field.matchedFields.length);
Collections.addAll(matchedFields, field.matchedFields);
fieldOptionsBuilder.matchedFields(matchedFields);
}
@@ -422,8 +422,8 @@ public class HighlightBuilder extends AbstractHighlighterBuilder<HighlightBuilde
ObjectParser<Field, QueryParseContext> parser = new ObjectParser<>("highlight_field");
parser.declareInt(Field::fragmentOffset, FRAGMENT_OFFSET_FIELD);
parser.declareStringArray(fromList(String.class, Field::matchedFields), MATCHED_FIELDS_FIELD);
- BiFunction<QueryParseContext, Field, Field> decoratedParser = setupParser(parser);
- PARSER = (XContentParser p, QueryParseContext c, String name) -> decoratedParser.apply(c, new Field(name));
+ BiFunction<XContentParser, Field, Field> decoratedParser = setupParser(parser);
+ PARSER = (XContentParser p, QueryParseContext c, String name) -> decoratedParser.apply(p, new Field(name));
}
private final String name;
diff --git a/core/src/main/java/org/elasticsearch/search/internal/AliasFilter.java b/core/src/main/java/org/elasticsearch/search/internal/AliasFilter.java
index 7c6bea8ce9..c641a38847 100644
--- a/core/src/main/java/org/elasticsearch/search/internal/AliasFilter.java
+++ b/core/src/main/java/org/elasticsearch/search/internal/AliasFilter.java
@@ -35,6 +35,8 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.Objects;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
+
/**
* Represents a {@link QueryBuilder} and a list of alias names that filters the builder is composed of.
*/
@@ -71,7 +73,7 @@ public final class AliasFilter implements Writeable {
* of dependencies we pass in a function that can perform the parsing. */
CheckedFunction<byte[], QueryBuilder, IOException> filterParser = bytes -> {
try (XContentParser parser = XContentFactory.xContent(bytes).createParser(context.getXContentRegistry(), bytes)) {
- return context.newParseContext(parser).parseInnerQueryBuilder();
+ return parseInnerQueryBuilder(parser);
}
};
return ShardSearchRequest.parseAliasFilter(filterParser, indexMetaData, aliases);
diff --git a/core/src/main/java/org/elasticsearch/search/rescore/QueryRescorerBuilder.java b/core/src/main/java/org/elasticsearch/search/rescore/QueryRescorerBuilder.java
index f4174e4895..3112b0db0a 100644
--- a/core/src/main/java/org/elasticsearch/search/rescore/QueryRescorerBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/rescore/QueryRescorerBuilder.java
@@ -34,6 +34,8 @@ import java.io.IOException;
import java.util.Locale;
import java.util.Objects;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
+
public class QueryRescorerBuilder extends RescoreBuilder<QueryRescorerBuilder> {
public static final String NAME = "query";
@@ -56,7 +58,7 @@ public class QueryRescorerBuilder extends RescoreBuilder<QueryRescorerBuilder> {
static {
QUERY_RESCORE_PARSER.declareObject(InnerBuilder::setQueryBuilder, (p, c) -> {
try {
- return c.parseInnerQueryBuilder();
+ return parseInnerQueryBuilder(p);
} catch (IOException e) {
throw new ParsingException(p.getTokenLocation(), "Could not parse inner query", e);
}
diff --git a/core/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java b/core/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java
index db6177ab36..1ba34d65b2 100644
--- a/core/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java
@@ -26,6 +26,7 @@ import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.xcontent.ObjectParser;
import org.elasticsearch.common.xcontent.ObjectParser.ValueType;
import org.elasticsearch.common.xcontent.XContentBuilder;
+import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.fielddata.IndexFieldData;
import org.elasticsearch.index.fielddata.IndexFieldData.XFieldComparatorSource.Nested;
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
@@ -315,13 +316,13 @@ public class FieldSortBuilder extends SortBuilder<FieldSortBuilder> {
* Creates a new {@link FieldSortBuilder} from the query held by the {@link QueryParseContext} in
* {@link org.elasticsearch.common.xcontent.XContent} format.
*
- * @param context the input parse context. The state on the parser contained in this context will be changed as a side effect of this
+ * @param parser the input parser. The state on the parser contained in this context will be changed as a side effect of this
* method call
* @param fieldName in some sort syntax variations the field name precedes the xContent object that specifies further parameters, e.g.
* in '{ "foo": { "order" : "asc"} }'. When parsing the inner object, the field name can be passed in via this argument
*/
- public static FieldSortBuilder fromXContent(QueryParseContext context, String fieldName) throws IOException {
- return PARSER.parse(context.parser(), new FieldSortBuilder(fieldName), context);
+ public static FieldSortBuilder fromXContent(XContentParser parser, String fieldName) throws IOException {
+ return PARSER.parse(parser, new FieldSortBuilder(fieldName), null);
}
private static ObjectParser<FieldSortBuilder, QueryParseContext> PARSER = new ObjectParser<>(NAME);
@@ -332,6 +333,6 @@ public class FieldSortBuilder extends SortBuilder<FieldSortBuilder> {
PARSER.declareString(FieldSortBuilder::unmappedType , UNMAPPED_TYPE);
PARSER.declareString((b, v) -> b.order(SortOrder.fromString(v)) , ORDER_FIELD);
PARSER.declareString((b, v) -> b.sortMode(SortMode.fromString(v)), SORT_MODE);
- PARSER.declareObject(FieldSortBuilder::setNestedFilter, SortBuilder::parseNestedFilter, NESTED_FILTER_FIELD);
+ PARSER.declareObject(FieldSortBuilder::setNestedFilter, (p, c) -> SortBuilder.parseNestedFilter(p), NESTED_FILTER_FIELD);
}
}
diff --git a/core/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java b/core/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java
index ddb4edec99..cb6425e8b0 100644
--- a/core/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java
@@ -60,6 +60,7 @@ import java.util.List;
import java.util.Locale;
import java.util.Objects;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
/**
* A geo distance based sorting on a geo point like field.
*/
@@ -386,14 +387,13 @@ public class GeoDistanceSortBuilder extends SortBuilder<GeoDistanceSortBuilder>
* Creates a new {@link GeoDistanceSortBuilder} from the query held by the {@link QueryParseContext} in
* {@link org.elasticsearch.common.xcontent.XContent} format.
*
- * @param context the input parse context. The state on the parser contained in this context will be changed as a
+ * @param parser the input parser. The state on the parser contained in this context will be changed as a
* side effect of this method call
* @param elementName in some sort syntax variations the field name precedes the xContent object that specifies
* further parameters, e.g. in '{ "foo": { "order" : "asc"} }'. When parsing the inner object,
* the field name can be passed in via this argument
*/
- public static GeoDistanceSortBuilder fromXContent(QueryParseContext context, String elementName) throws IOException {
- XContentParser parser = context.parser();
+ public static GeoDistanceSortBuilder fromXContent(XContentParser parser, String elementName) throws IOException {
String fieldName = null;
List<GeoPoint> geoPoints = new ArrayList<>();
DistanceUnit unit = DistanceUnit.DEFAULT;
@@ -415,7 +415,7 @@ public class GeoDistanceSortBuilder extends SortBuilder<GeoDistanceSortBuilder>
fieldName = currentName;
} else if (token == XContentParser.Token.START_OBJECT) {
if (NESTED_FILTER_FIELD.match(currentName)) {
- nestedFilter = context.parseInnerQueryBuilder();
+ nestedFilter = parseInnerQueryBuilder(parser);
} else {
// the json in the format of -> field : { lat : 30, lon : 12 }
if (fieldName != null && fieldName.equals(currentName) == false) {
diff --git a/core/src/main/java/org/elasticsearch/search/sort/ScoreSortBuilder.java b/core/src/main/java/org/elasticsearch/search/sort/ScoreSortBuilder.java
index 52f2530178..fb727da0a2 100644
--- a/core/src/main/java/org/elasticsearch/search/sort/ScoreSortBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/sort/ScoreSortBuilder.java
@@ -24,6 +24,7 @@ import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.xcontent.ObjectParser;
import org.elasticsearch.common.xcontent.XContentBuilder;
+import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.query.QueryShardContext;
import org.elasticsearch.search.DocValueFormat;
@@ -76,13 +77,13 @@ public class ScoreSortBuilder extends SortBuilder<ScoreSortBuilder> {
* Creates a new {@link ScoreSortBuilder} from the query held by the {@link QueryParseContext} in
* {@link org.elasticsearch.common.xcontent.XContent} format.
*
- * @param context the input parse context. The state on the parser contained in this context will be changed as a side effect of this
+ * @param parser the input parser. The state on the parser contained in this context will be changed as a side effect of this
* method call
* @param fieldName in some sort syntax variations the field name precedes the xContent object that specifies further parameters, e.g.
* in '{ "foo": { "order" : "asc"} }'. When parsing the inner object, the field name can be passed in via this argument
*/
- public static ScoreSortBuilder fromXContent(QueryParseContext context, String fieldName) throws IOException {
- return PARSER.apply(context.parser(), context);
+ public static ScoreSortBuilder fromXContent(XContentParser parser, String fieldName) throws IOException {
+ return PARSER.apply(parser, null);
}
private static ObjectParser<ScoreSortBuilder, QueryParseContext> PARSER = new ObjectParser<>(NAME, ScoreSortBuilder::new);
diff --git a/core/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java b/core/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java
index 749d2d13ba..8e743dbbca 100644
--- a/core/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java
@@ -32,6 +32,7 @@ import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
import org.elasticsearch.common.xcontent.ObjectParser.ValueType;
import org.elasticsearch.common.xcontent.XContentBuilder;
+import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.fielddata.AbstractBinaryDocValues;
import org.elasticsearch.index.fielddata.FieldData;
import org.elasticsearch.index.fielddata.IndexFieldData;
@@ -221,20 +222,20 @@ public class ScriptSortBuilder extends SortBuilder<ScriptSortBuilder> {
PARSER.declareString((b, v) -> b.order(SortOrder.fromString(v)), ORDER_FIELD);
PARSER.declareString((b, v) -> b.sortMode(SortMode.fromString(v)), SORTMODE_FIELD);
PARSER.declareString(ScriptSortBuilder::setNestedPath , NESTED_PATH_FIELD);
- PARSER.declareObject(ScriptSortBuilder::setNestedFilter, SortBuilder::parseNestedFilter, NESTED_FILTER_FIELD);
+ PARSER.declareObject(ScriptSortBuilder::setNestedFilter, (p,c) -> SortBuilder.parseNestedFilter(p), NESTED_FILTER_FIELD);
}
/**
* Creates a new {@link ScriptSortBuilder} from the query held by the {@link QueryParseContext} in
* {@link org.elasticsearch.common.xcontent.XContent} format.
*
- * @param context the input parse context. The state on the parser contained in this context will be changed as a side effect of this
+ * @param parser the input parser. The state on the parser contained in this context will be changed as a side effect of this
* method call
* @param elementName in some sort syntax variations the field name precedes the xContent object that specifies further parameters, e.g.
* in '{ "foo": { "order" : "asc"} }'. When parsing the inner object, the field name can be passed in via this argument
*/
- public static ScriptSortBuilder fromXContent(QueryParseContext context, String elementName) throws IOException {
- return PARSER.apply(context.parser(), context);
+ public static ScriptSortBuilder fromXContent(XContentParser parser, String elementName) throws IOException {
+ return PARSER.apply(parser, null);
}
diff --git a/core/src/main/java/org/elasticsearch/search/sort/SortBuilder.java b/core/src/main/java/org/elasticsearch/search/sort/SortBuilder.java
index 962e873255..984e6b8a98 100644
--- a/core/src/main/java/org/elasticsearch/search/sort/SortBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/sort/SortBuilder.java
@@ -32,7 +32,6 @@ import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.fielddata.IndexFieldData.XFieldComparatorSource.Nested;
import org.elasticsearch.index.mapper.ObjectMapper;
import org.elasticsearch.index.query.QueryBuilder;
-import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.index.query.QueryShardContext;
import org.elasticsearch.index.query.QueryShardException;
import org.elasticsearch.search.DocValueFormat;
@@ -46,6 +45,7 @@ import java.util.Objects;
import java.util.Optional;
import static java.util.Collections.unmodifiableMap;
+import static org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder;
public abstract class SortBuilder<T extends SortBuilder<T>> extends ToXContentToBytes implements NamedWriteable {
@@ -89,14 +89,13 @@ public abstract class SortBuilder<T extends SortBuilder<T>> extends ToXContentTo
return this.order;
}
- public static List<SortBuilder<?>> fromXContent(QueryParseContext context) throws IOException {
+ public static List<SortBuilder<?>> fromXContent(XContentParser parser) throws IOException {
List<SortBuilder<?>> sortFields = new ArrayList<>(2);
- XContentParser parser = context.parser();
XContentParser.Token token = parser.currentToken();
if (token == XContentParser.Token.START_ARRAY) {
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
if (token == XContentParser.Token.START_OBJECT) {
- parseCompoundSortField(context, sortFields);
+ parseCompoundSortField(parser, sortFields);
} else if (token == XContentParser.Token.VALUE_STRING) {
String fieldName = parser.text();
sortFields.add(fieldOrScoreSort(fieldName));
@@ -109,7 +108,7 @@ public abstract class SortBuilder<T extends SortBuilder<T>> extends ToXContentTo
String fieldName = parser.text();
sortFields.add(fieldOrScoreSort(fieldName));
} else if (token == XContentParser.Token.START_OBJECT) {
- parseCompoundSortField(context, sortFields);
+ parseCompoundSortField(parser, sortFields);
} else {
throw new IllegalArgumentException("malformed sort format, either start with array, object, or an actual string");
}
@@ -124,10 +123,9 @@ public abstract class SortBuilder<T extends SortBuilder<T>> extends ToXContentTo
}
}
- private static void parseCompoundSortField(QueryParseContext context, List<SortBuilder<?>> sortFields)
+ private static void parseCompoundSortField(XContentParser parser, List<SortBuilder<?>> sortFields)
throws IOException {
XContentParser.Token token;
- XContentParser parser = context.parser();
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (token == XContentParser.Token.FIELD_NAME) {
String fieldName = parser.currentName();
@@ -137,9 +135,9 @@ public abstract class SortBuilder<T extends SortBuilder<T>> extends ToXContentTo
sortFields.add(fieldOrScoreSort(fieldName).order(order));
} else {
if (PARSERS.containsKey(fieldName)) {
- sortFields.add(PARSERS.get(fieldName).fromXContent(context, fieldName));
+ sortFields.add(PARSERS.get(fieldName).fromXContent(parser, fieldName));
} else {
- sortFields.add(FieldSortBuilder.fromXContent(context, fieldName));
+ sortFields.add(FieldSortBuilder.fromXContent(parser, fieldName));
}
}
}
@@ -201,9 +199,9 @@ public abstract class SortBuilder<T extends SortBuilder<T>> extends ToXContentTo
return nested;
}
- protected static QueryBuilder parseNestedFilter(XContentParser parser, QueryParseContext context) {
+ protected static QueryBuilder parseNestedFilter(XContentParser parser) {
try {
- return context.parseInnerQueryBuilder();
+ return parseInnerQueryBuilder(parser);
} catch (Exception e) {
throw new ParsingException(parser.getTokenLocation(), "Expected " + NESTED_FILTER_FIELD.getPreferredName() + " element.", e);
}
@@ -211,6 +209,6 @@ public abstract class SortBuilder<T extends SortBuilder<T>> extends ToXContentTo
@FunctionalInterface
private interface Parser<T extends SortBuilder<?>> {
- T fromXContent(QueryParseContext context, String elementName) throws IOException;
+ T fromXContent(XContentParser parser, String elementName) throws IOException;
}
}
diff --git a/core/src/main/java/org/elasticsearch/search/suggest/phrase/PhraseSuggester.java b/core/src/main/java/org/elasticsearch/search/suggest/phrase/PhraseSuggester.java
index 2ab60b0d8e..ff06dfe81a 100644
--- a/core/src/main/java/org/elasticsearch/search/suggest/phrase/PhraseSuggester.java
+++ b/core/src/main/java/org/elasticsearch/search/suggest/phrase/PhraseSuggester.java
@@ -28,15 +28,14 @@ import org.apache.lucene.search.spell.DirectSpellChecker;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefBuilder;
import org.apache.lucene.util.CharsRefBuilder;
-import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.lucene.Lucene;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentParser;
+import org.elasticsearch.index.query.AbstractQueryBuilder;
import org.elasticsearch.index.query.ParsedQuery;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryShardContext;
-import org.elasticsearch.script.ExecutableScript;
import org.elasticsearch.script.TemplateScript;
import org.elasticsearch.search.suggest.Suggest.Suggestion;
import org.elasticsearch.search.suggest.Suggest.Suggestion.Entry;
@@ -49,7 +48,6 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.function.Function;
public final class PhraseSuggester extends Suggester<PhraseSuggestionContext> {
private final BytesRef SEPARATOR = new BytesRef(" ");
@@ -119,7 +117,7 @@ public final class PhraseSuggester extends Suggester<PhraseSuggestionContext> {
final String querySource = scriptFactory.newInstance(vars).execute();
try (XContentParser parser = XContentFactory.xContent(querySource).createParser(shardContext.getXContentRegistry(),
querySource)) {
- QueryBuilder innerQueryBuilder = shardContext.newParseContext(parser).parseInnerQueryBuilder();
+ QueryBuilder innerQueryBuilder = AbstractQueryBuilder.parseInnerQueryBuilder(parser);
final ParsedQuery parsedQuery = shardContext.toQuery(innerQueryBuilder);
collateMatch = Lucene.exists(searcher, parsedQuery.query());
}