Remove parser argument from methods where we already pass in a parse context
When we pass down both parser and QueryParseContext to a method, we cannot make sure that the parser contained in the context and the parser that is parsed as an argument have the same state. This removes the parser argument from methods where we currently have both the parser and the parse context as arguments and instead retrieves the parse from the context inside the method.
This commit is contained in:
parent
ed3a71fa2b
commit
e15e7f7e6e
|
@ -219,7 +219,7 @@ public class TransportPercolateAction extends HandledTransportAction<PercolateRe
|
|||
try (XContentParser parser = XContentFactory.xContent(XContentType.JSON).createParser(source)) {
|
||||
context.reset(parser);
|
||||
context.parseFieldMatcher(parseFieldMatcher);
|
||||
searchSourceBuilder.parseXContent(parser, context, aggParsers, null);
|
||||
searchSourceBuilder.parseXContent(context, aggParsers, null);
|
||||
searchRequest.source(searchSourceBuilder);
|
||||
return searchRequest;
|
||||
}
|
||||
|
|
|
@ -250,7 +250,7 @@ public class HasChildQueryBuilder extends AbstractQueryBuilder<HasChildQueryBuil
|
|||
if (parseContext.parseFieldMatcher().match(currentFieldName, QUERY_FIELD)) {
|
||||
iqb = parseContext.parseInnerQueryBuilder();
|
||||
} else if (parseContext.parseFieldMatcher().match(currentFieldName, INNER_HITS_FIELD)) {
|
||||
innerHitBuilder = InnerHitBuilder.fromXContent(parser, parseContext);
|
||||
innerHitBuilder = InnerHitBuilder.fromXContent(parseContext);
|
||||
} else {
|
||||
throw new ParsingException(parser.getTokenLocation(), "[has_child] query does not support [" + currentFieldName + "]");
|
||||
}
|
||||
|
|
|
@ -252,7 +252,7 @@ public class HasParentQueryBuilder extends AbstractQueryBuilder<HasParentQueryBu
|
|||
if (parseContext.parseFieldMatcher().match(currentFieldName, QUERY_FIELD)) {
|
||||
iqb = parseContext.parseInnerQueryBuilder();
|
||||
} else if (parseContext.parseFieldMatcher().match(currentFieldName, INNER_HITS_FIELD)) {
|
||||
innerHits = InnerHitBuilder.fromXContent(parser, parseContext);
|
||||
innerHits = InnerHitBuilder.fromXContent(parseContext);
|
||||
} else {
|
||||
throw new ParsingException(parser.getTokenLocation(), "[has_parent] query does not support [" + currentFieldName + "]");
|
||||
}
|
||||
|
|
|
@ -163,7 +163,7 @@ public class NestedQueryBuilder extends AbstractQueryBuilder<NestedQueryBuilder>
|
|||
float boost = AbstractQueryBuilder.DEFAULT_BOOST;
|
||||
ScoreMode scoreMode = ScoreMode.Avg;
|
||||
String queryName = null;
|
||||
QueryBuilder query = null;
|
||||
QueryBuilder<?> query = null;
|
||||
String path = null;
|
||||
String currentFieldName = null;
|
||||
InnerHitBuilder innerHitBuilder = null;
|
||||
|
@ -176,7 +176,7 @@ public class NestedQueryBuilder extends AbstractQueryBuilder<NestedQueryBuilder>
|
|||
if (parseContext.parseFieldMatcher().match(currentFieldName, QUERY_FIELD)) {
|
||||
query = parseContext.parseInnerQueryBuilder();
|
||||
} else if (parseContext.parseFieldMatcher().match(currentFieldName, INNER_HITS_FIELD)) {
|
||||
innerHitBuilder = InnerHitBuilder.fromXContent(parser, parseContext);
|
||||
innerHitBuilder = InnerHitBuilder.fromXContent(parseContext);
|
||||
} else {
|
||||
throw new ParsingException(parser.getTokenLocation(), "[nested] query does not support [" + currentFieldName + "]");
|
||||
}
|
||||
|
|
|
@ -97,7 +97,8 @@ public final class DecayFunctionParser<DFB extends DecayFunctionBuilder<DFB>> im
|
|||
* </pre>
|
||||
*/
|
||||
@Override
|
||||
public DFB fromXContent(QueryParseContext context, XContentParser parser) throws IOException, ParsingException {
|
||||
public DFB fromXContent(QueryParseContext context) throws IOException, ParsingException {
|
||||
XContentParser parser = context.parser();
|
||||
String currentFieldName;
|
||||
XContentParser.Token token;
|
||||
MultiValueMode multiValueMode = DecayFunctionBuilder.DEFAULT_MULTI_VALUE_MODE;
|
||||
|
|
|
@ -159,8 +159,9 @@ public class FieldValueFactorFunctionBuilder extends ScoreFunctionBuilder<FieldV
|
|||
return new FieldValueFactorFunction(field, factor, modifier, missing, fieldData);
|
||||
}
|
||||
|
||||
public static FieldValueFactorFunctionBuilder fromXContent(QueryParseContext parseContext, XContentParser parser)
|
||||
public static FieldValueFactorFunctionBuilder fromXContent(QueryParseContext parseContext)
|
||||
throws IOException, ParsingException {
|
||||
XContentParser parser = parseContext.parser();
|
||||
String currentFieldName = null;
|
||||
String field = null;
|
||||
float boostFactor = FieldValueFactorFunctionBuilder.DEFAULT_FACTOR;
|
||||
|
|
|
@ -216,7 +216,7 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
|
|||
/**
|
||||
* Returns the boost mode, meaning how the combined result of score functions will influence the final score together with the sub query
|
||||
* score.
|
||||
*
|
||||
*
|
||||
* @see CombineFunction
|
||||
*/
|
||||
public CombineFunction boostMode() {
|
||||
|
@ -477,7 +477,7 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
|
|||
// we try to parse a score function. If there is no score function for the current field name,
|
||||
// getScoreFunction will throw.
|
||||
ScoreFunctionBuilder<?> scoreFunction = scoreFunctionsRegistry.lookup(currentFieldName, parseContext.parser())
|
||||
.fromXContent(parseContext, parser);
|
||||
.fromXContent(parseContext);
|
||||
filterFunctionBuilders.add(new FunctionScoreQueryBuilder.FilterFunctionBuilder(scoreFunction));
|
||||
}
|
||||
} else if (token == XContentParser.Token.START_ARRAY) {
|
||||
|
@ -487,7 +487,7 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
|
|||
handleMisplacedFunctionsDeclaration(parser.getTokenLocation(), errorString);
|
||||
}
|
||||
functionArrayFound = true;
|
||||
currentFieldName = parseFiltersAndFunctions(scoreFunctionsRegistry, parseContext, parser, filterFunctionBuilders);
|
||||
currentFieldName = parseFiltersAndFunctions(scoreFunctionsRegistry, parseContext, filterFunctionBuilders);
|
||||
} else {
|
||||
throw new ParsingException(parser.getTokenLocation(), "failed to parse [{}] query. array [{}] is not supported",
|
||||
NAME, currentFieldName);
|
||||
|
@ -555,10 +555,11 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
|
|||
}
|
||||
|
||||
private static String parseFiltersAndFunctions(ParseFieldRegistry<ScoreFunctionParser<?>> scoreFunctionsRegistry,
|
||||
QueryParseContext parseContext, XContentParser parser,
|
||||
List<FunctionScoreQueryBuilder.FilterFunctionBuilder> filterFunctionBuilders) throws IOException {
|
||||
QueryParseContext parseContext, 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;
|
||||
|
@ -580,7 +581,7 @@ public class FunctionScoreQueryBuilder extends AbstractQueryBuilder<FunctionScor
|
|||
"failed to parse function_score functions. already found [{}], now encountering [{}].",
|
||||
scoreFunction.getName(), currentFieldName);
|
||||
}
|
||||
scoreFunction = scoreFunctionsRegistry.lookup(currentFieldName, parser).fromXContent(parseContext, parser);
|
||||
scoreFunction = scoreFunctionsRegistry.lookup(currentFieldName, parser).fromXContent(parseContext);
|
||||
}
|
||||
} else if (token.isValue()) {
|
||||
if (parseContext.parseFieldMatcher().match(currentFieldName, WEIGHT_FIELD)) {
|
||||
|
|
|
@ -143,8 +143,9 @@ public class RandomScoreFunctionBuilder extends ScoreFunctionBuilder<RandomScore
|
|||
return Long.hashCode(value);
|
||||
}
|
||||
|
||||
public static RandomScoreFunctionBuilder fromXContent(QueryParseContext parseContext, XContentParser parser)
|
||||
public static RandomScoreFunctionBuilder fromXContent(QueryParseContext parseContext)
|
||||
throws IOException, ParsingException {
|
||||
XContentParser parser = parseContext.parser();
|
||||
RandomScoreFunctionBuilder randomScoreFunctionBuilder = new RandomScoreFunctionBuilder();
|
||||
String currentFieldName = null;
|
||||
XContentParser.Token token;
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
package org.elasticsearch.index.query.functionscore;
|
||||
|
||||
import org.elasticsearch.common.ParsingException;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -30,5 +29,5 @@ import java.io.IOException;
|
|||
*/
|
||||
@FunctionalInterface
|
||||
public interface ScoreFunctionParser<FB extends ScoreFunctionBuilder<FB>> {
|
||||
FB fromXContent(QueryParseContext context, XContentParser parser) throws IOException, ParsingException;
|
||||
FB fromXContent(QueryParseContext context) throws IOException, ParsingException;
|
||||
}
|
||||
|
|
|
@ -32,9 +32,9 @@ import org.elasticsearch.index.query.QueryShardContext;
|
|||
import org.elasticsearch.index.query.QueryShardException;
|
||||
import org.elasticsearch.script.Script;
|
||||
import org.elasticsearch.script.Script.ScriptField;
|
||||
import org.elasticsearch.script.ScriptParameterParser.ScriptParameterValue;
|
||||
import org.elasticsearch.script.ScriptContext;
|
||||
import org.elasticsearch.script.ScriptParameterParser;
|
||||
import org.elasticsearch.script.ScriptParameterParser.ScriptParameterValue;
|
||||
import org.elasticsearch.script.SearchScript;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -110,8 +110,9 @@ public class ScriptScoreFunctionBuilder extends ScoreFunctionBuilder<ScriptScore
|
|||
}
|
||||
}
|
||||
|
||||
public static ScriptScoreFunctionBuilder fromXContent(QueryParseContext parseContext, XContentParser parser)
|
||||
public static ScriptScoreFunctionBuilder fromXContent(QueryParseContext parseContext)
|
||||
throws IOException, ParsingException {
|
||||
XContentParser parser = parseContext.parser();
|
||||
ScriptParameterParser scriptParameterParser = new ScriptParameterParser();
|
||||
Script script = null;
|
||||
Map<String, Object> vars = null;
|
||||
|
|
|
@ -82,7 +82,7 @@ public final class InnerHitBuilder extends ToXContentToBytes implements Writeabl
|
|||
try {
|
||||
List<ScriptField> scriptFields = new ArrayList<>();
|
||||
for (XContentParser.Token token = p.nextToken(); token != END_OBJECT; token = p.nextToken()) {
|
||||
scriptFields.add(new ScriptField(p, c));
|
||||
scriptFields.add(new ScriptField(c));
|
||||
}
|
||||
i.setScriptFields(scriptFields);
|
||||
} catch (IOException e) {
|
||||
|
@ -93,7 +93,7 @@ public final class InnerHitBuilder extends ToXContentToBytes implements Writeabl
|
|||
ObjectParser.ValueType.OBJECT_ARRAY);
|
||||
PARSER.declareField((p, i, c) -> {
|
||||
try {
|
||||
i.setFetchSourceContext(FetchSourceContext.parse(p, c));
|
||||
i.setFetchSourceContext(FetchSourceContext.parse(c));
|
||||
} catch (IOException e) {
|
||||
throw new ParsingException(p.getTokenLocation(), "Could not parse inner _source definition", e);
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ public final class InnerHitBuilder extends ToXContentToBytes implements Writeabl
|
|||
}, SearchSourceBuilder.QUERY_FIELD);
|
||||
PARSER.declareObject(InnerHitBuilder::setInnerHitsBuilder, (p, c) -> {
|
||||
try {
|
||||
return InnerHitsBuilder.fromXContent(p, c);
|
||||
return InnerHitsBuilder.fromXContent(c);
|
||||
} catch (IOException e) {
|
||||
throw new ParsingException(p.getTokenLocation(), "Could not parse inner query definition", e);
|
||||
}
|
||||
|
@ -579,8 +579,8 @@ public final class InnerHitBuilder extends ToXContentToBytes implements Writeabl
|
|||
fieldDataFields, scriptFields, fetchSourceContext, sorts, highlightBuilder, query, innerHitsBuilder);
|
||||
}
|
||||
|
||||
public static InnerHitBuilder fromXContent(XContentParser parser, QueryParseContext context) throws IOException {
|
||||
return PARSER.parse(parser, new InnerHitBuilder(), context);
|
||||
public static InnerHitBuilder fromXContent(QueryParseContext context) throws IOException {
|
||||
return PARSER.parse(context.parser(), new InnerHitBuilder(), context);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@ import org.elasticsearch.common.ParsingException;
|
|||
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.xcontent.ToXContent;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.common.xcontent.XContentParser.Token;
|
||||
|
@ -104,13 +103,14 @@ public final class InnerHitsBuilder extends ToXContentToBytes implements Writeab
|
|||
return innerHitsBuilders.hashCode();
|
||||
}
|
||||
|
||||
public static InnerHitsBuilder fromXContent(XContentParser parser, QueryParseContext context) throws IOException {
|
||||
public static InnerHitsBuilder fromXContent(QueryParseContext context) throws IOException {
|
||||
Map<String, InnerHitBuilder> innerHitBuilders = new HashMap<>();
|
||||
String innerHitName = null;
|
||||
XContentParser parser = context.parser();
|
||||
for (Token token = parser.nextToken(); token != Token.END_OBJECT; token = parser.nextToken()) {
|
||||
switch (token) {
|
||||
case START_OBJECT:
|
||||
InnerHitBuilder innerHitBuilder = InnerHitBuilder.fromXContent(parser, context);
|
||||
InnerHitBuilder innerHitBuilder = InnerHitBuilder.fromXContent(context);
|
||||
innerHitBuilder.setName(innerHitName);
|
||||
innerHitBuilders.put(innerHitName, innerHitBuilder);
|
||||
break;
|
||||
|
|
|
@ -196,7 +196,7 @@ public class RestMultiSearchAction extends BaseRestHandler {
|
|||
} else {
|
||||
try (XContentParser requestParser = XContentFactory.xContent(slice).createParser(slice)) {
|
||||
queryParseContext.reset(requestParser);
|
||||
searchRequest.source(SearchSourceBuilder.fromXContent(requestParser, queryParseContext, aggParsers, suggesters));
|
||||
searchRequest.source(SearchSourceBuilder.fromXContent(queryParseContext, aggParsers, suggesters));
|
||||
}
|
||||
}
|
||||
// move pointers
|
||||
|
|
|
@ -130,7 +130,7 @@ public class RestSearchAction extends BaseRestHandler {
|
|||
Template template = TemplateQueryBuilder.parse(parser, context.parseFieldMatcher(), "params", "template");
|
||||
searchRequest.template(template);
|
||||
} else {
|
||||
searchRequest.source().parseXContent(parser, context, aggParsers, suggesters);
|
||||
searchRequest.source().parseXContent(context, aggParsers, suggesters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
package org.elasticsearch.search;
|
||||
|
||||
import com.carrotsearch.hppc.ObjectFloatHashMap;
|
||||
|
||||
import org.apache.lucene.search.FieldDoc;
|
||||
import org.apache.lucene.search.Sort;
|
||||
import org.apache.lucene.search.TopDocs;
|
||||
|
@ -571,7 +572,7 @@ public class SearchService extends AbstractLifecycleComponent<SearchService> imp
|
|||
QueryParseContext queryParseContext = new QueryParseContext(indicesService.getIndicesQueryRegistry());
|
||||
queryParseContext.reset(parser);
|
||||
queryParseContext.parseFieldMatcher(parseFieldMatcher);
|
||||
parseSource(context, SearchSourceBuilder.fromXContent(parser, queryParseContext, aggParsers, suggesters));
|
||||
parseSource(context, SearchSourceBuilder.fromXContent(queryParseContext, aggParsers, suggesters));
|
||||
}
|
||||
}
|
||||
parseSource(context, request.source());
|
||||
|
|
|
@ -65,7 +65,7 @@ public class AggregationParseElement implements SearchParseElement {
|
|||
QueryParseContext parseContext = new QueryParseContext(queriesRegistry);
|
||||
parseContext.reset(parser);
|
||||
parseContext.parseFieldMatcher(context.parseFieldMatcher());
|
||||
AggregatorFactories.Builder builders = aggregatorParsers.parseAggregators(parser, parseContext);
|
||||
AggregatorFactories.Builder builders = aggregatorParsers.parseAggregators(parseContext);
|
||||
AggregationContext aggContext = new AggregationContext(context);
|
||||
AggregatorFactories factories = builders.build(aggContext, null);
|
||||
factories.validate();
|
||||
|
|
|
@ -26,7 +26,6 @@ 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.lease.Releasable;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.bucket.BucketsAggregator;
|
||||
import org.elasticsearch.search.aggregations.support.AggregationContext;
|
||||
|
@ -60,12 +59,11 @@ public abstract class Aggregator extends BucketCollector implements Releasable {
|
|||
* aggregation should be skipped (e.g. when trying to aggregate on unmapped fields).
|
||||
*
|
||||
* @param aggregationName The name of the aggregation
|
||||
* @param parser The xcontent parser
|
||||
* @param context The search context
|
||||
* @param context The parse context
|
||||
* @return The resolved aggregator factory or {@code null} in case the aggregation should be skipped
|
||||
* @throws java.io.IOException When parsing fails
|
||||
*/
|
||||
AggregatorBuilder<?> parse(String aggregationName, XContentParser parser, QueryParseContext context) throws IOException;
|
||||
AggregatorBuilder<?> parse(String aggregationName, QueryParseContext context) throws IOException;
|
||||
|
||||
/**
|
||||
* @return an empty {@link AggregatorBuilder} instance for this parser
|
||||
|
|
|
@ -71,15 +71,14 @@ public class AggregatorParsers {
|
|||
/**
|
||||
* Parses the aggregation request recursively generating aggregator factories in turn.
|
||||
*
|
||||
* @param parser The input xcontent that will be parsed.
|
||||
* @param parseContext The parse context.
|
||||
*
|
||||
* @return The parsed aggregator factories.
|
||||
*
|
||||
* @throws IOException When parsing fails for unknown reasons.
|
||||
*/
|
||||
public AggregatorFactories.Builder parseAggregators(XContentParser parser, QueryParseContext parseContext) throws IOException {
|
||||
return parseAggregators(parser, parseContext, 0);
|
||||
public AggregatorFactories.Builder parseAggregators(QueryParseContext parseContext) throws IOException {
|
||||
return parseAggregators(parseContext.parser(), parseContext, 0);
|
||||
}
|
||||
|
||||
private AggregatorFactories.Builder parseAggregators(XContentParser parser, QueryParseContext parseContext, int level)
|
||||
|
@ -173,10 +172,10 @@ public class AggregatorParsers {
|
|||
throw new ParsingException(parser.getTokenLocation(),
|
||||
"Could not find aggregator type [" + fieldName + "] in [" + aggregationName + "]");
|
||||
} else {
|
||||
pipelineAggregatorFactory = pipelineAggregatorParser.parse(aggregationName, parser, parseContext);
|
||||
pipelineAggregatorFactory = pipelineAggregatorParser.parse(aggregationName, parseContext);
|
||||
}
|
||||
} else {
|
||||
aggFactory = aggregatorParser.parse(aggregationName, parser, parseContext);
|
||||
aggFactory = aggregatorParser.parse(aggregationName, parseContext);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -126,12 +126,12 @@ public class ChildrenAggregatorBuilder extends ValuesSourceAggregatorBuilder<Par
|
|||
return builder;
|
||||
}
|
||||
|
||||
public static ChildrenAggregatorBuilder parse(String aggregationName, XContentParser parser,
|
||||
QueryParseContext context) throws IOException {
|
||||
public static ChildrenAggregatorBuilder parse(String aggregationName, QueryParseContext context) throws IOException {
|
||||
String childType = null;
|
||||
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
XContentParser parser = context.parser();
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||
if (token == XContentParser.Token.FIELD_NAME) {
|
||||
currentFieldName = parser.currentName();
|
||||
|
|
|
@ -19,10 +19,10 @@
|
|||
package org.elasticsearch.search.aggregations.bucket.filter;
|
||||
|
||||
import org.elasticsearch.common.ParsingException;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.Aggregator;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
|
@ -36,8 +36,7 @@ public class FilterParser implements Aggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public FilterAggregatorBuilder parse(String aggregationName, XContentParser parser, QueryParseContext context)
|
||||
throws IOException {
|
||||
public FilterAggregatorBuilder parse(String aggregationName, QueryParseContext context) throws IOException {
|
||||
QueryBuilder<?> filter = context.parseInnerQueryBuilder();
|
||||
|
||||
if (filter == null) {
|
||||
|
|
|
@ -53,8 +53,9 @@ public class FiltersParser implements Aggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public FiltersAggregatorBuilder parse(String aggregationName, XContentParser parser, QueryParseContext context)
|
||||
public FiltersAggregatorBuilder parse(String aggregationName, QueryParseContext context)
|
||||
throws IOException {
|
||||
XContentParser parser = context.parser();
|
||||
|
||||
List<FiltersAggregator.KeyedFilter> keyedFilters = null;
|
||||
List<QueryBuilder<?>> nonKeyedFilters = null;
|
||||
|
|
|
@ -18,9 +18,9 @@
|
|||
*/
|
||||
package org.elasticsearch.search.aggregations.bucket.global;
|
||||
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.Aggregator;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
|
@ -34,9 +34,8 @@ public class GlobalParser implements Aggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public GlobalAggregatorBuilder parse(String aggregationName, XContentParser parser, QueryParseContext context)
|
||||
throws IOException {
|
||||
parser.nextToken();
|
||||
public GlobalAggregatorBuilder parse(String aggregationName, QueryParseContext context) throws IOException {
|
||||
context.parser().nextToken();
|
||||
return new GlobalAggregatorBuilder(aggregationName);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.elasticsearch.common.ParsingException;
|
|||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.Aggregator;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
|
@ -35,12 +36,12 @@ public class NestedParser implements Aggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public NestedAggregatorBuilder parse(String aggregationName, XContentParser parser, QueryParseContext context)
|
||||
throws IOException {
|
||||
public NestedAggregatorBuilder parse(String aggregationName, QueryParseContext context) throws IOException {
|
||||
String path = null;
|
||||
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
XContentParser parser = context.parser();
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||
if (token == XContentParser.Token.FIELD_NAME) {
|
||||
currentFieldName = parser.currentName();
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.elasticsearch.common.ParsingException;
|
|||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.Aggregator;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
|
@ -35,12 +36,12 @@ public class ReverseNestedParser implements Aggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ReverseNestedAggregatorBuilder parse(String aggregationName, XContentParser parser,
|
||||
QueryParseContext context) throws IOException {
|
||||
public ReverseNestedAggregatorBuilder parse(String aggregationName, QueryParseContext context) throws IOException {
|
||||
String path = null;
|
||||
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
XContentParser parser = context.parser();
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||
if (token == XContentParser.Token.FIELD_NAME) {
|
||||
currentFieldName = parser.currentName();
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.elasticsearch.common.ParsingException;
|
|||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.Aggregator;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
|
@ -36,13 +37,13 @@ public class SamplerParser implements Aggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public SamplerAggregatorBuilder parse(String aggregationName, XContentParser parser, QueryParseContext context)
|
||||
throws IOException {
|
||||
public SamplerAggregatorBuilder parse(String aggregationName, QueryParseContext context) throws IOException {
|
||||
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
Integer shardSize = null;
|
||||
|
||||
XContentParser parser = context.parser();
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||
if (token == XContentParser.Token.FIELD_NAME) {
|
||||
currentFieldName = parser.currentName();
|
||||
|
|
|
@ -0,0 +1,168 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.elasticsearch.search.aggregations.metrics.scripted;
|
||||
|
||||
import org.elasticsearch.common.ParseField;
|
||||
import org.elasticsearch.common.ParsingException;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.script.Script;
|
||||
import org.elasticsearch.script.ScriptParameterParser;
|
||||
import org.elasticsearch.script.ScriptParameterParser.ScriptParameterValue;
|
||||
import org.elasticsearch.search.aggregations.Aggregator;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class ScriptedMetricParser implements Aggregator.Parser {
|
||||
|
||||
public static final String INIT_SCRIPT = "init_script";
|
||||
public static final String MAP_SCRIPT = "map_script";
|
||||
public static final String COMBINE_SCRIPT = "combine_script";
|
||||
public static final String REDUCE_SCRIPT = "reduce_script";
|
||||
public static final ParseField INIT_SCRIPT_FIELD = new ParseField("init_script");
|
||||
public static final ParseField MAP_SCRIPT_FIELD = new ParseField("map_script");
|
||||
public static final ParseField COMBINE_SCRIPT_FIELD = new ParseField("combine_script");
|
||||
public static final ParseField REDUCE_SCRIPT_FIELD = new ParseField("reduce_script");
|
||||
public static final ParseField PARAMS_FIELD = new ParseField("params");
|
||||
public static final ParseField REDUCE_PARAMS_FIELD = new ParseField("reduce_params");
|
||||
public static final ParseField LANG_FIELD = new ParseField("lang");
|
||||
|
||||
@Override
|
||||
public String type() {
|
||||
return InternalScriptedMetric.TYPE.name();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScriptedMetricAggregatorBuilder parse(String aggregationName, QueryParseContext context) throws IOException {
|
||||
Script initScript = null;
|
||||
Script mapScript = null;
|
||||
Script combineScript = null;
|
||||
Script reduceScript = null;
|
||||
Map<String, Object> params = null;
|
||||
Map<String, Object> reduceParams = null;
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
Set<String> scriptParameters = new HashSet<>();
|
||||
scriptParameters.add(INIT_SCRIPT);
|
||||
scriptParameters.add(MAP_SCRIPT);
|
||||
scriptParameters.add(COMBINE_SCRIPT);
|
||||
scriptParameters.add(REDUCE_SCRIPT);
|
||||
ScriptParameterParser scriptParameterParser = new ScriptParameterParser(scriptParameters);
|
||||
|
||||
XContentParser parser = context.parser();
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||
if (token == XContentParser.Token.FIELD_NAME) {
|
||||
currentFieldName = parser.currentName();
|
||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||
if (context.parseFieldMatcher().match(currentFieldName, INIT_SCRIPT_FIELD)) {
|
||||
initScript = Script.parse(parser, context.parseFieldMatcher());
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, MAP_SCRIPT_FIELD)) {
|
||||
mapScript = Script.parse(parser, context.parseFieldMatcher());
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, COMBINE_SCRIPT_FIELD)) {
|
||||
combineScript = Script.parse(parser, context.parseFieldMatcher());
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, REDUCE_SCRIPT_FIELD)) {
|
||||
reduceScript = Script.parse(parser, context.parseFieldMatcher());
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, PARAMS_FIELD)) {
|
||||
params = parser.map();
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, REDUCE_PARAMS_FIELD)) {
|
||||
reduceParams = parser.map();
|
||||
} else {
|
||||
throw new ParsingException(parser.getTokenLocation(),
|
||||
"Unknown key for a " + token + " in [" + aggregationName + "]: [" + currentFieldName + "].");
|
||||
}
|
||||
} else if (token.isValue()) {
|
||||
if (!scriptParameterParser.token(currentFieldName, token, parser, context.parseFieldMatcher())) {
|
||||
throw new ParsingException(parser.getTokenLocation(),
|
||||
"Unknown key for a " + token + " in [" + aggregationName + "]: [" + currentFieldName + "].");
|
||||
}
|
||||
} else {
|
||||
throw new ParsingException(parser.getTokenLocation(), "Unexpected token " + token + " in [" + aggregationName + "].");
|
||||
}
|
||||
}
|
||||
|
||||
if (initScript == null) { // Didn't find anything using the new API so try using the old one instead
|
||||
ScriptParameterValue scriptValue = scriptParameterParser.getScriptParameterValue(INIT_SCRIPT);
|
||||
if (scriptValue != null) {
|
||||
initScript = new Script(scriptValue.script(), scriptValue.scriptType(), scriptParameterParser.lang(), params);
|
||||
}
|
||||
} else if (initScript.getParams() != null) {
|
||||
throw new ParsingException(parser.getTokenLocation(),
|
||||
"init_script params are not supported. Parameters for the init_script must be specified in the params field on the scripted_metric aggregator not inside the init_script object");
|
||||
}
|
||||
|
||||
if (mapScript == null) { // Didn't find anything using the new API so try using the old one instead
|
||||
ScriptParameterValue scriptValue = scriptParameterParser.getScriptParameterValue(MAP_SCRIPT);
|
||||
if (scriptValue != null) {
|
||||
mapScript = new Script(scriptValue.script(), scriptValue.scriptType(), scriptParameterParser.lang(), params);
|
||||
}
|
||||
} else if (mapScript.getParams() != null) {
|
||||
throw new ParsingException(parser.getTokenLocation(),
|
||||
"map_script params are not supported. Parameters for the map_script must be specified in the params field on the scripted_metric aggregator not inside the map_script object");
|
||||
}
|
||||
|
||||
if (combineScript == null) { // Didn't find anything using the new API so try using the old one instead
|
||||
ScriptParameterValue scriptValue = scriptParameterParser.getScriptParameterValue(COMBINE_SCRIPT);
|
||||
if (scriptValue != null) {
|
||||
combineScript = new Script(scriptValue.script(), scriptValue.scriptType(), scriptParameterParser.lang(), params);
|
||||
}
|
||||
} else if (combineScript.getParams() != null) {
|
||||
throw new ParsingException(parser.getTokenLocation(),
|
||||
"combine_script params are not supported. Parameters for the combine_script must be specified in the params field on the scripted_metric aggregator not inside the combine_script object");
|
||||
}
|
||||
|
||||
if (reduceScript == null) { // Didn't find anything using the new API so try using the old one instead
|
||||
ScriptParameterValue scriptValue = scriptParameterParser.getScriptParameterValue(REDUCE_SCRIPT);
|
||||
if (scriptValue != null) {
|
||||
reduceScript = new Script(scriptValue.script(), scriptValue.scriptType(), scriptParameterParser.lang(), reduceParams);
|
||||
}
|
||||
}
|
||||
|
||||
if (mapScript == null) {
|
||||
throw new ParsingException(parser.getTokenLocation(), "map_script field is required in [" + aggregationName + "].");
|
||||
}
|
||||
|
||||
ScriptedMetricAggregatorBuilder factory = new ScriptedMetricAggregatorBuilder(aggregationName);
|
||||
if (initScript != null) {
|
||||
factory.initScript(initScript);
|
||||
}
|
||||
if (mapScript != null) {
|
||||
factory.mapScript(mapScript);
|
||||
}
|
||||
if (combineScript != null) {
|
||||
factory.combineScript(combineScript);
|
||||
}
|
||||
if (reduceScript != null) {
|
||||
factory.reduceScript(reduceScript);
|
||||
}
|
||||
if (params != null) {
|
||||
factory.params(params);
|
||||
}
|
||||
return factory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScriptedMetricAggregatorBuilder getFactoryPrototypes() {
|
||||
return ScriptedMetricAggregatorBuilder.PROTOTYPE;
|
||||
}
|
||||
|
||||
}
|
|
@ -44,11 +44,11 @@ public class TopHitsParser implements Aggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public TopHitsAggregatorBuilder parse(String aggregationName, XContentParser parser, QueryParseContext context)
|
||||
throws IOException {
|
||||
public TopHitsAggregatorBuilder parse(String aggregationName, QueryParseContext context) throws IOException {
|
||||
TopHitsAggregatorBuilder factory = new TopHitsAggregatorBuilder(aggregationName);
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
XContentParser parser = context.parser();
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||
if (token == XContentParser.Token.FIELD_NAME) {
|
||||
currentFieldName = parser.currentName();
|
||||
|
@ -64,7 +64,7 @@ public class TopHitsParser implements Aggregator.Parser {
|
|||
} else if (context.parseFieldMatcher().match(currentFieldName, SearchSourceBuilder.TRACK_SCORES_FIELD)) {
|
||||
factory.trackScores(parser.booleanValue());
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, SearchSourceBuilder._SOURCE_FIELD)) {
|
||||
factory.fetchSource(FetchSourceContext.parse(parser, context));
|
||||
factory.fetchSource(FetchSourceContext.parse(context));
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, SearchSourceBuilder.FIELDS_FIELD)) {
|
||||
List<String> fieldNames = new ArrayList<>();
|
||||
fieldNames.add(parser.text());
|
||||
|
@ -77,7 +77,7 @@ public class TopHitsParser implements Aggregator.Parser {
|
|||
}
|
||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||
if (context.parseFieldMatcher().match(currentFieldName, SearchSourceBuilder._SOURCE_FIELD)) {
|
||||
factory.fetchSource(FetchSourceContext.parse(parser, context));
|
||||
factory.fetchSource(FetchSourceContext.parse(context));
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, SearchSourceBuilder.SCRIPT_FIELDS_FIELD)) {
|
||||
List<ScriptField> scriptFields = new ArrayList<>();
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||
|
@ -157,7 +157,7 @@ public class TopHitsParser implements Aggregator.Parser {
|
|||
List<SortBuilder<?>> sorts = SortBuilder.fromXContent(context);
|
||||
factory.sorts(sorts);
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, SearchSourceBuilder._SOURCE_FIELD)) {
|
||||
factory.fetchSource(FetchSourceContext.parse(parser, context));
|
||||
factory.fetchSource(FetchSourceContext.parse(context));
|
||||
} else {
|
||||
throw new ParsingException(parser.getTokenLocation(), "Unknown key for a " + token + " in [" + currentFieldName + "].",
|
||||
parser.getTokenLocation());
|
||||
|
|
|
@ -24,7 +24,6 @@ import org.elasticsearch.common.ParseField;
|
|||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||
import org.elasticsearch.common.io.stream.Streamable;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.InternalAggregation;
|
||||
import org.elasticsearch.search.aggregations.InternalAggregation.ReduceContext;
|
||||
|
@ -59,15 +58,13 @@ public abstract class PipelineAggregator implements Streamable {
|
|||
*
|
||||
* @param pipelineAggregatorName
|
||||
* The name of the pipeline aggregation
|
||||
* @param parser
|
||||
* The xcontent parser
|
||||
* @param context
|
||||
* The search context
|
||||
* @return The resolved pipeline aggregator factory
|
||||
* @throws java.io.IOException
|
||||
* When parsing fails
|
||||
*/
|
||||
PipelineAggregatorBuilder<?> parse(String pipelineAggregatorName, XContentParser parser, QueryParseContext context)
|
||||
PipelineAggregatorBuilder<?> parse(String pipelineAggregatorName, QueryParseContext context)
|
||||
throws IOException;
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,6 +25,7 @@ import org.elasticsearch.common.xcontent.XContentParser;
|
|||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.pipeline.BucketHelpers.GapPolicy;
|
||||
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.ParseException;
|
||||
import java.util.ArrayList;
|
||||
|
@ -44,8 +45,9 @@ public abstract class BucketMetricsParser implements PipelineAggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public final BucketMetricsPipelineAggregatorBuilder<?> parse(String pipelineAggregatorName, XContentParser parser,
|
||||
QueryParseContext context) throws IOException {
|
||||
public final BucketMetricsPipelineAggregatorBuilder<?> parse(String pipelineAggregatorName, QueryParseContext context)
|
||||
throws IOException {
|
||||
XContentParser parser = context.parser();
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
String[] bucketsPaths = null;
|
||||
|
|
|
@ -46,8 +46,8 @@ public class BucketScriptParser implements PipelineAggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public BucketScriptPipelineAggregatorBuilder parse(String reducerName, XContentParser parser,
|
||||
QueryParseContext context) throws IOException {
|
||||
public BucketScriptPipelineAggregatorBuilder parse(String reducerName, QueryParseContext context) throws IOException {
|
||||
XContentParser parser = context.parser();
|
||||
XContentParser.Token token;
|
||||
Script script = null;
|
||||
String currentFieldName = null;
|
||||
|
|
|
@ -46,8 +46,8 @@ public class BucketSelectorParser implements PipelineAggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public BucketSelectorPipelineAggregatorBuilder parse(String reducerName, XContentParser parser,
|
||||
QueryParseContext context) throws IOException {
|
||||
public BucketSelectorPipelineAggregatorBuilder parse(String reducerName, QueryParseContext context) throws IOException {
|
||||
XContentParser parser = context.parser();
|
||||
XContentParser.Token token;
|
||||
Script script = null;
|
||||
String currentFieldName = null;
|
||||
|
|
|
@ -24,6 +24,7 @@ import org.elasticsearch.common.ParsingException;
|
|||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -40,8 +41,8 @@ public class CumulativeSumParser implements PipelineAggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CumulativeSumPipelineAggregatorBuilder parse(String pipelineAggregatorName,
|
||||
XContentParser parser, QueryParseContext context) throws IOException {
|
||||
public CumulativeSumPipelineAggregatorBuilder parse(String pipelineAggregatorName, QueryParseContext context) throws IOException {
|
||||
XContentParser parser = context.parser();
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
String[] bucketsPaths = null;
|
||||
|
|
|
@ -25,6 +25,7 @@ import org.elasticsearch.common.xcontent.XContentParser;
|
|||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.pipeline.BucketHelpers.GapPolicy;
|
||||
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -41,8 +42,8 @@ public class DerivativeParser implements PipelineAggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public DerivativePipelineAggregatorBuilder parse(String pipelineAggregatorName, XContentParser parser,
|
||||
QueryParseContext context) throws IOException {
|
||||
public DerivativePipelineAggregatorBuilder parse(String pipelineAggregatorName, QueryParseContext context) throws IOException {
|
||||
XContentParser parser = context.parser();
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
String[] bucketsPaths = null;
|
||||
|
|
|
@ -56,8 +56,8 @@ public class MovAvgParser implements PipelineAggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public MovAvgPipelineAggregatorBuilder parse(String pipelineAggregatorName, XContentParser parser,
|
||||
QueryParseContext context) throws IOException {
|
||||
public MovAvgPipelineAggregatorBuilder parse(String pipelineAggregatorName, QueryParseContext context) throws IOException {
|
||||
XContentParser parser = context.parser();
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
String[] bucketsPaths = null;
|
||||
|
|
|
@ -25,6 +25,7 @@ import org.elasticsearch.common.xcontent.XContentParser;
|
|||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.pipeline.BucketHelpers.GapPolicy;
|
||||
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -41,8 +42,8 @@ public class SerialDiffParser implements PipelineAggregator.Parser {
|
|||
}
|
||||
|
||||
@Override
|
||||
public SerialDiffPipelineAggregatorBuilder parse(String reducerName, XContentParser parser,
|
||||
QueryParseContext context) throws IOException {
|
||||
public SerialDiffPipelineAggregatorBuilder parse(String reducerName, QueryParseContext context) throws IOException {
|
||||
XContentParser parser = context.parser();
|
||||
XContentParser.Token token;
|
||||
String currentFieldName = null;
|
||||
String[] bucketsPaths = null;
|
||||
|
|
|
@ -84,9 +84,10 @@ public abstract class AbstractValuesSourceParser<VS extends ValuesSource>
|
|||
}
|
||||
|
||||
@Override
|
||||
public final ValuesSourceAggregatorBuilder<VS, ?> parse(String aggregationName, XContentParser parser, QueryParseContext context)
|
||||
public final ValuesSourceAggregatorBuilder<VS, ?> parse(String aggregationName, QueryParseContext context)
|
||||
throws IOException {
|
||||
|
||||
XContentParser parser = context.parser();
|
||||
String field = null;
|
||||
Script script = null;
|
||||
ValueType valueType = null;
|
||||
|
|
|
@ -101,10 +101,10 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|
|||
public static final ParseField PROFILE_FIELD = new ParseField("profile");
|
||||
public static final ParseField SEARCH_AFTER = new ParseField("search_after");
|
||||
|
||||
public static SearchSourceBuilder fromXContent(XContentParser parser, QueryParseContext context, AggregatorParsers aggParsers,
|
||||
public static SearchSourceBuilder fromXContent(QueryParseContext context, AggregatorParsers aggParsers,
|
||||
Suggesters suggesters) throws IOException {
|
||||
SearchSourceBuilder builder = new SearchSourceBuilder();
|
||||
builder.parseXContent(parser, context, aggParsers, suggesters);
|
||||
builder.parseXContent(context, aggParsers, suggesters);
|
||||
return builder;
|
||||
}
|
||||
|
||||
|
@ -979,11 +979,12 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|
|||
/**
|
||||
* Parse some xContent into this SearchSourceBuilder, overwriting any values specified in the xContent. Use this if you need to set up
|
||||
* different defaults than a regular SearchSourceBuilder would have and use
|
||||
* {@link #fromXContent(XContentParser, QueryParseContext, AggregatorParsers, Suggesters)} if you have normal defaults.
|
||||
* {@link #fromXContent(QueryParseContext, AggregatorParsers, Suggesters)} if you have normal defaults.
|
||||
*/
|
||||
public void parseXContent(XContentParser parser, QueryParseContext context, AggregatorParsers aggParsers, Suggesters suggesters)
|
||||
public void parseXContent(QueryParseContext context, AggregatorParsers aggParsers, Suggesters suggesters)
|
||||
throws IOException {
|
||||
|
||||
XContentParser parser = context.parser();
|
||||
XContentParser.Token token = parser.currentToken();
|
||||
String currentFieldName = null;
|
||||
if (token != XContentParser.Token.START_OBJECT && (token = parser.nextToken()) != XContentParser.Token.START_OBJECT) {
|
||||
|
@ -1011,7 +1012,7 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|
|||
} else if (context.parseFieldMatcher().match(currentFieldName, TRACK_SCORES_FIELD)) {
|
||||
trackScores = parser.booleanValue();
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, _SOURCE_FIELD)) {
|
||||
fetchSourceContext = FetchSourceContext.parse(parser, context);
|
||||
fetchSourceContext = FetchSourceContext.parse(context);
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, FIELDS_FIELD)) {
|
||||
field(parser.text());
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, SORT_FIELD)) {
|
||||
|
@ -1028,11 +1029,11 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|
|||
} else if (context.parseFieldMatcher().match(currentFieldName, POST_FILTER_FIELD)) {
|
||||
postQueryBuilder = context.parseInnerQueryBuilder();
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, _SOURCE_FIELD)) {
|
||||
fetchSourceContext = FetchSourceContext.parse(parser, context);
|
||||
fetchSourceContext = FetchSourceContext.parse(context);
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, SCRIPT_FIELDS_FIELD)) {
|
||||
scriptFields = new ArrayList<>();
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||
scriptFields.add(new ScriptField(parser, context));
|
||||
scriptFields.add(new ScriptField(context));
|
||||
}
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, INDICES_BOOST_FIELD)) {
|
||||
indexBoost = new ObjectFloatHashMap<String>();
|
||||
|
@ -1047,11 +1048,11 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|
|||
}
|
||||
}
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, AGGREGATIONS_FIELD)) {
|
||||
aggregations = aggParsers.parseAggregators(parser, context);
|
||||
aggregations = aggParsers.parseAggregators(context);
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, HIGHLIGHT_FIELD)) {
|
||||
highlightBuilder = HighlightBuilder.fromXContent(context);
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, INNER_HITS_FIELD)) {
|
||||
innerHitsBuilder = InnerHitsBuilder.fromXContent(parser, context);
|
||||
innerHitsBuilder = InnerHitsBuilder.fromXContent(context);
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, SUGGEST_FIELD)) {
|
||||
suggestBuilder = SuggestBuilder.fromXContent(context, suggesters);
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, SORT_FIELD)) {
|
||||
|
@ -1103,7 +1104,7 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|
|||
}
|
||||
}
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, _SOURCE_FIELD)) {
|
||||
fetchSourceContext = FetchSourceContext.parse(parser, context);
|
||||
fetchSourceContext = FetchSourceContext.parse(context);
|
||||
} else if (context.parseFieldMatcher().match(currentFieldName, SEARCH_AFTER)) {
|
||||
searchAfterBuilder = SearchAfterBuilder.PROTOTYPE.fromXContent(parser, context.parseFieldMatcher());
|
||||
} else {
|
||||
|
@ -1290,8 +1291,9 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|
|||
out.writeBoolean(ignoreFailure);
|
||||
}
|
||||
|
||||
public ScriptField(XContentParser parser, QueryParseContext context) throws IOException {
|
||||
public ScriptField(QueryParseContext context) throws IOException {
|
||||
boolean ignoreFailure = false;
|
||||
XContentParser parser = context.parser();
|
||||
String scriptFieldName = parser.currentName();
|
||||
Script script = null;
|
||||
|
||||
|
@ -1373,6 +1375,7 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(aggregations, explain, fetchSourceContext, fieldDataFields, fieldNames, from,
|
||||
highlightBuilder, indexBoost, innerHitsBuilder, minScore, postQueryBuilder, queryBuilder, rescoreBuilders, scriptFields,
|
||||
|
|
|
@ -50,9 +50,9 @@ public class FetchSourceContext implements Streamable, ToXContent {
|
|||
private String[] includes;
|
||||
private String[] excludes;
|
||||
|
||||
public static FetchSourceContext parse(XContentParser parser, QueryParseContext context) throws IOException {
|
||||
public static FetchSourceContext parse(QueryParseContext context) throws IOException {
|
||||
FetchSourceContext fetchSourceContext = new FetchSourceContext();
|
||||
fetchSourceContext.fromXContent(parser, context);
|
||||
fetchSourceContext.fromXContent(context);
|
||||
return fetchSourceContext;
|
||||
}
|
||||
|
||||
|
@ -147,7 +147,8 @@ public class FetchSourceContext implements Streamable, ToXContent {
|
|||
return null;
|
||||
}
|
||||
|
||||
public void fromXContent(XContentParser parser, QueryParseContext context) throws IOException {
|
||||
public void fromXContent(QueryParseContext context) throws IOException {
|
||||
XContentParser parser = context.parser();
|
||||
XContentParser.Token token = parser.currentToken();
|
||||
boolean fetchSource = true;
|
||||
String[] includes = Strings.EMPTY_ARRAY;
|
||||
|
|
|
@ -21,18 +21,12 @@ package org.elasticsearch.search.highlight;
|
|||
|
||||
import org.apache.lucene.search.Query;
|
||||
import org.apache.lucene.search.vectorhighlight.SimpleBoundaryScanner;
|
||||
import org.elasticsearch.common.ParsingException;
|
||||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||
import org.elasticsearch.common.io.stream.Writeable;
|
||||
import org.elasticsearch.ExceptionsHelper;
|
||||
import org.elasticsearch.common.ParseField;
|
||||
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.xcontent.ObjectParser;
|
||||
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.index.query.QueryBuilder;
|
||||
|
|
|
@ -93,7 +93,7 @@ public abstract class SortBuilder<T extends SortBuilder<?>> extends ToXContentTo
|
|||
if (token == XContentParser.Token.START_ARRAY) {
|
||||
while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
|
||||
if (token == XContentParser.Token.START_OBJECT) {
|
||||
parseCompoundSortField(parser, context, sortFields);
|
||||
parseCompoundSortField(context, sortFields);
|
||||
} else if (token == XContentParser.Token.VALUE_STRING) {
|
||||
String fieldName = parser.text();
|
||||
sortFields.add(fieldOrScoreSort(fieldName));
|
||||
|
@ -106,7 +106,7 @@ public abstract class SortBuilder<T extends SortBuilder<?>> extends ToXContentTo
|
|||
String fieldName = parser.text();
|
||||
sortFields.add(fieldOrScoreSort(fieldName));
|
||||
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||
parseCompoundSortField(parser, context, sortFields);
|
||||
parseCompoundSortField(context, sortFields);
|
||||
} else {
|
||||
throw new IllegalArgumentException("malformed sort format, either start with array, object, or an actual string");
|
||||
}
|
||||
|
@ -121,9 +121,10 @@ public abstract class SortBuilder<T extends SortBuilder<?>> extends ToXContentTo
|
|||
}
|
||||
}
|
||||
|
||||
private static void parseCompoundSortField(XContentParser parser, QueryParseContext context, List<SortBuilder<?>> sortFields)
|
||||
private static void parseCompoundSortField(QueryParseContext context, 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();
|
||||
|
|
|
@ -35,7 +35,6 @@ import org.elasticsearch.common.lucene.search.function.FiltersFunctionScoreQuery
|
|||
import org.elasticsearch.common.lucene.search.function.FunctionScoreQuery;
|
||||
import org.elasticsearch.common.lucene.search.function.WeightFactorFunction;
|
||||
import org.elasticsearch.common.unit.DistanceUnit;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.common.xcontent.XContentType;
|
||||
import org.elasticsearch.index.query.AbstractQueryBuilder;
|
||||
import org.elasticsearch.index.query.AbstractQueryTestCase;
|
||||
|
@ -725,9 +724,9 @@ public class FunctionScoreQueryBuilderTests extends AbstractQueryTestCase<Functi
|
|||
return NAME;
|
||||
}
|
||||
|
||||
public static RandomScoreFunctionBuilder fromXContent(QueryParseContext parseContext, XContentParser parser)
|
||||
public static RandomScoreFunctionBuilder fromXContent(QueryParseContext parseContext)
|
||||
throws IOException, ParsingException {
|
||||
RandomScoreFunctionBuilder builder = RandomScoreFunctionBuilder.fromXContent(parseContext, parser);
|
||||
RandomScoreFunctionBuilder builder = RandomScoreFunctionBuilder.fromXContent(parseContext);
|
||||
RandomScoreFunctionBuilderWithFixedSeed replacement = new RandomScoreFunctionBuilderWithFixedSeed();
|
||||
replacement.seed(builder.getSeed());
|
||||
return replacement;
|
||||
|
|
|
@ -30,7 +30,6 @@ import org.elasticsearch.common.xcontent.XContentFactory;
|
|||
import org.elasticsearch.common.xcontent.XContentHelper;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.common.xcontent.XContentType;
|
||||
import org.elasticsearch.index.query.AbstractQueryTestCase;
|
||||
import org.elasticsearch.index.query.MatchQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
|
||||
|
@ -40,8 +39,6 @@ import org.elasticsearch.search.SearchModule;
|
|||
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
||||
import org.elasticsearch.search.fetch.source.FetchSourceContext;
|
||||
import org.elasticsearch.search.highlight.HighlightBuilderTests;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.ScriptSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortBuilder;
|
||||
import org.elasticsearch.search.sort.SortBuilders;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
|
@ -101,7 +98,7 @@ public class InnerHitBuilderTests extends ESTestCase {
|
|||
|
||||
XContentParser parser = XContentHelper.createParser(builder.bytes());
|
||||
context.reset(parser);
|
||||
InnerHitBuilder secondInnerHits = InnerHitBuilder.fromXContent(parser, context);
|
||||
InnerHitBuilder secondInnerHits = InnerHitBuilder.fromXContent(context);
|
||||
assertThat(innerHit, not(sameInstance(secondInnerHits)));
|
||||
assertThat(innerHit, equalTo(secondInnerHits));
|
||||
assertThat(innerHit.hashCode(), equalTo(secondInnerHits.hashCode()));
|
||||
|
|
|
@ -30,29 +30,14 @@ import org.elasticsearch.common.xcontent.XContentFactory;
|
|||
import org.elasticsearch.common.xcontent.XContentHelper;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.common.xcontent.XContentType;
|
||||
import org.elasticsearch.index.query.MatchQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
|
||||
import org.elasticsearch.script.Script;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
import org.elasticsearch.search.SearchModule;
|
||||
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
||||
import org.elasticsearch.search.fetch.source.FetchSourceContext;
|
||||
import org.elasticsearch.search.highlight.HighlightBuilderTests;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortBuilder;
|
||||
import org.elasticsearch.search.sort.SortBuilders;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.elasticsearch.test.ESTestCase;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
|
@ -100,7 +85,7 @@ public class InnerHitsBuilderTests extends ESTestCase {
|
|||
XContentParser parser = XContentHelper.createParser(builder.bytes());
|
||||
context.reset(parser);
|
||||
parser.nextToken();
|
||||
InnerHitsBuilder secondInnerHits = InnerHitsBuilder.fromXContent(parser, context);
|
||||
InnerHitsBuilder secondInnerHits = InnerHitsBuilder.fromXContent(context);
|
||||
assertThat(innerHits, not(sameInstance(secondInnerHits)));
|
||||
assertThat(innerHits, equalTo(secondInnerHits));
|
||||
assertThat(innerHits.hashCode(), equalTo(secondInnerHits.hashCode()));
|
||||
|
|
|
@ -69,7 +69,7 @@ public class AggregationCollectorTests extends ESSingleNodeTestCase {
|
|||
aggParser.nextToken();
|
||||
SearchContext searchContext = createSearchContext(index);
|
||||
AggregationContext aggContext = new AggregationContext(searchContext);
|
||||
final AggregatorFactories factories = parser.parseAggregators(aggParser, parseContext).build(aggContext, null);
|
||||
final AggregatorFactories factories = parser.parseAggregators(parseContext).build(aggContext, null);
|
||||
final Aggregator[] aggregators = factories.createTopLevelAggregators();
|
||||
assertEquals(1, aggregators.length);
|
||||
return aggregators[0].needsScores();
|
||||
|
|
|
@ -214,7 +214,7 @@ public class AggregatorParsingTests extends ESTestCase {
|
|||
parseContext.reset(parser);
|
||||
parseContext.parseFieldMatcher(parseFieldMatcher);
|
||||
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
|
||||
aggParsers.parseAggregators(parser, parseContext);
|
||||
aggParsers.parseAggregators(parseContext);
|
||||
fail();
|
||||
} catch (ParsingException e) {
|
||||
assertThat(e.toString(), containsString("Found two aggregation type definitions in [in_stock]: [filter] and [terms]"));
|
||||
|
@ -250,7 +250,7 @@ public class AggregatorParsingTests extends ESTestCase {
|
|||
parseContext.reset(parser);
|
||||
parseContext.parseFieldMatcher(parseFieldMatcher);
|
||||
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
|
||||
aggParsers.parseAggregators(parser, parseContext);
|
||||
aggParsers.parseAggregators(parseContext);
|
||||
fail();
|
||||
} catch (ParsingException e) {
|
||||
assertThat(e.toString(), containsString("Found two sub aggregation definitions under [by_date]"));
|
||||
|
@ -290,7 +290,7 @@ public class AggregatorParsingTests extends ESTestCase {
|
|||
parseContext.reset(parser);
|
||||
parseContext.parseFieldMatcher(parseFieldMatcher);
|
||||
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
|
||||
aggParsers.parseAggregators(parser, parseContext);
|
||||
aggParsers.parseAggregators(parseContext);
|
||||
fail();
|
||||
} catch (ParsingException e) {
|
||||
assertThat(e.toString(), containsString("Invalid aggregation name [" + name + "]"));
|
||||
|
@ -318,7 +318,7 @@ public class AggregatorParsingTests extends ESTestCase {
|
|||
parseContext.reset(parser);
|
||||
parseContext.parseFieldMatcher(parseFieldMatcher);
|
||||
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
|
||||
aggParsers.parseAggregators(parser, parseContext);
|
||||
aggParsers.parseAggregators(parseContext);
|
||||
fail();
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertThat(e.toString(), containsString("Two sibling aggregations cannot have the same name: [" + name + "]"));
|
||||
|
@ -348,7 +348,7 @@ public class AggregatorParsingTests extends ESTestCase {
|
|||
parseContext.reset(parser);
|
||||
parseContext.parseFieldMatcher(parseFieldMatcher);
|
||||
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
|
||||
aggParsers.parseAggregators(parser, parseContext);
|
||||
aggParsers.parseAggregators(parseContext);
|
||||
fail();
|
||||
} catch (ParsingException e) {
|
||||
// All Good
|
||||
|
@ -378,7 +378,7 @@ public class AggregatorParsingTests extends ESTestCase {
|
|||
parseContext.reset(parser);
|
||||
parseContext.parseFieldMatcher(parseFieldMatcher);
|
||||
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
|
||||
aggParsers.parseAggregators(parser, parseContext);
|
||||
aggParsers.parseAggregators(parseContext);
|
||||
fail();
|
||||
} catch (ParsingException e) {
|
||||
// All Good
|
||||
|
|
|
@ -235,7 +235,7 @@ public abstract class BaseAggregationTestCase<AB extends AggregatorBuilder<AB>>
|
|||
assertSame(XContentParser.Token.FIELD_NAME, parser.nextToken());
|
||||
assertEquals(testAgg.type.name(), parser.currentName());
|
||||
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
|
||||
AggregatorBuilder<?> newAgg = aggParsers.parser(testAgg.getType(), parser).parse(testAgg.name, parser, parseContext);
|
||||
AggregatorBuilder newAgg = aggParsers.parser(testAgg.getType(), parser).parse(testAgg.name, parseContext);
|
||||
assertSame(XContentParser.Token.END_OBJECT, parser.currentToken());
|
||||
assertSame(XContentParser.Token.END_OBJECT, parser.nextToken());
|
||||
assertSame(XContentParser.Token.END_OBJECT, parser.nextToken());
|
||||
|
|
|
@ -237,8 +237,8 @@ public abstract class BasePipelineAggregationTestCase<AF extends PipelineAggrega
|
|||
assertSame(XContentParser.Token.FIELD_NAME, parser.nextToken());
|
||||
assertEquals(testAgg.type(), parser.currentName());
|
||||
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
|
||||
PipelineAggregatorBuilder<?> newAgg = aggParsers.pipelineParser(testAgg.getWriteableName(), parser).parse(testAgg.name(), parser,
|
||||
parseContext);
|
||||
PipelineAggregatorBuilder<?> newAgg = aggParsers.pipelineParser(testAgg.getWriteableName(), parser)
|
||||
.parse(testAgg.name(), parseContext);
|
||||
assertSame(XContentParser.Token.END_OBJECT, parser.currentToken());
|
||||
assertSame(XContentParser.Token.END_OBJECT, parser.nextToken());
|
||||
assertSame(XContentParser.Token.END_OBJECT, parser.nextToken());
|
||||
|
|
|
@ -37,7 +37,7 @@ public class GeoHashGridParserTests extends ESTestCase {
|
|||
assertSame(XContentParser.Token.START_OBJECT, token);
|
||||
GeoHashGridParser parser = new GeoHashGridParser();
|
||||
// can create a factory
|
||||
assertNotNull(parser.parse("geohash_grid", stParser, parseContext));
|
||||
assertNotNull(parser.parse("geohash_grid", parseContext));
|
||||
}
|
||||
|
||||
public void testParseValidFromStrings() throws Exception {
|
||||
|
@ -51,7 +51,7 @@ public class GeoHashGridParserTests extends ESTestCase {
|
|||
assertSame(XContentParser.Token.START_OBJECT, token);
|
||||
GeoHashGridParser parser = new GeoHashGridParser();
|
||||
// can create a factory
|
||||
assertNotNull(parser.parse("geohash_grid", stParser, parseContext));
|
||||
assertNotNull(parser.parse("geohash_grid", parseContext));
|
||||
}
|
||||
|
||||
public void testParseErrorOnNonIntPrecision() throws Exception {
|
||||
|
@ -63,7 +63,7 @@ public class GeoHashGridParserTests extends ESTestCase {
|
|||
assertSame(XContentParser.Token.START_OBJECT, token);
|
||||
GeoHashGridParser parser = new GeoHashGridParser();
|
||||
try {
|
||||
parser.parse("geohash_grid", stParser, parseContext);
|
||||
parser.parse("geohash_grid", parseContext);
|
||||
fail();
|
||||
} catch (NumberFormatException ex) {
|
||||
assertEquals("For input string: \"2.0\"", ex.getMessage());
|
||||
|
@ -79,7 +79,7 @@ public class GeoHashGridParserTests extends ESTestCase {
|
|||
assertSame(XContentParser.Token.START_OBJECT, token);
|
||||
GeoHashGridParser parser = new GeoHashGridParser();
|
||||
try {
|
||||
parser.parse("geohash_grid", stParser, parseContext);
|
||||
parser.parse("geohash_grid", parseContext);
|
||||
fail();
|
||||
} catch (ParsingException ex) {
|
||||
assertEquals("Unexpected token VALUE_BOOLEAN [precision] in [geohash_grid].", ex.getMessage());
|
||||
|
@ -95,7 +95,7 @@ public class GeoHashGridParserTests extends ESTestCase {
|
|||
assertSame(XContentParser.Token.START_OBJECT, token);
|
||||
GeoHashGridParser parser = new GeoHashGridParser();
|
||||
try {
|
||||
parser.parse("geohash_grid", stParser, parseContext);
|
||||
parser.parse("geohash_grid", parseContext);
|
||||
fail();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
assertEquals("Invalid geohash aggregation precision of 13. Must be between 1 and 12.", ex.getMessage());
|
||||
|
|
|
@ -253,7 +253,7 @@ public class SignificanceHeuristicTests extends ESTestCase {
|
|||
parseContext.reset(stParser);
|
||||
parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
|
||||
stParser.nextToken();
|
||||
new SignificantTermsParser(heuristicParserMapper, registry).parse("testagg", stParser, parseContext);
|
||||
new SignificantTermsParser(heuristicParserMapper, registry).parse("testagg", parseContext);
|
||||
fail();
|
||||
} catch (ElasticsearchParseException e) {
|
||||
assertTrue(e.getMessage().contains(expectedError));
|
||||
|
@ -277,7 +277,7 @@ public class SignificanceHeuristicTests extends ESTestCase {
|
|||
parseContext.parseFieldMatcher(ParseFieldMatcher.STRICT);
|
||||
stParser.nextToken();
|
||||
SignificantTermsAggregatorBuilder aggregatorFactory = (SignificantTermsAggregatorBuilder) new SignificantTermsParser(
|
||||
heuristicParserMapper, registry).parse("testagg", stParser, parseContext);
|
||||
heuristicParserMapper, registry).parse("testagg", parseContext);
|
||||
stParser.nextToken();
|
||||
assertThat(aggregatorFactory.getBucketCountThresholds().getMinDocCount(), equalTo(200L));
|
||||
assertThat(stParser.currentToken(), equalTo(null));
|
||||
|
|
|
@ -177,7 +177,7 @@ public class TopHitsTests extends BaseAggregationTestCase<TopHitsAggregatorBuild
|
|||
parseContext.reset(parser);
|
||||
parseContext.parseFieldMatcher(parseFieldMatcher);
|
||||
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
|
||||
aggParsers.parseAggregators(parser, parseContext);
|
||||
aggParsers.parseAggregators(parseContext);
|
||||
fail();
|
||||
} catch (AggregationInitializationException e) {
|
||||
assertThat(e.toString(), containsString("Aggregator [top_tags_hits] of type [top_hits] cannot accept sub-aggregations"));
|
||||
|
|
|
@ -23,8 +23,8 @@ import org.elasticsearch.common.xcontent.XContentFactory;
|
|||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.aggregations.BasePipelineAggregationTestCase;
|
||||
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorBuilder;
|
||||
import org.elasticsearch.search.aggregations.pipeline.BucketHelpers.GapPolicy;
|
||||
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorBuilder;
|
||||
import org.elasticsearch.search.aggregations.pipeline.movavg.MovAvgPipelineAggregatorBuilder;
|
||||
import org.elasticsearch.search.aggregations.pipeline.movavg.models.EwmaModel;
|
||||
import org.elasticsearch.search.aggregations.pipeline.movavg.models.HoltLinearModel;
|
||||
|
@ -116,7 +116,7 @@ public class MovAvgTests extends BasePipelineAggregationTestCase<MovAvgPipelineA
|
|||
assertSame(XContentParser.Token.FIELD_NAME, parser.nextToken());
|
||||
assertEquals(expected.type(), parser.currentName());
|
||||
assertSame(XContentParser.Token.START_OBJECT, parser.nextToken());
|
||||
PipelineAggregatorBuilder<?> newAgg = aggParsers.pipelineParser(expected.getWriteableName(), parser).parse(expected.name(), parser,
|
||||
PipelineAggregatorBuilder<?> newAgg = aggParsers.pipelineParser(expected.getWriteableName(), parser).parse(expected.name(),
|
||||
parseContext);
|
||||
assertSame(XContentParser.Token.END_OBJECT, parser.currentToken());
|
||||
assertSame(XContentParser.Token.END_OBJECT, parser.nextToken());
|
||||
|
|
|
@ -454,7 +454,7 @@ public class SearchSourceBuilderTests extends ESTestCase {
|
|||
if (randomBoolean()) {
|
||||
parser.nextToken(); // sometimes we move it on the START_OBJECT to test the embedded case
|
||||
}
|
||||
SearchSourceBuilder newBuilder = SearchSourceBuilder.fromXContent(parser, parseContext, aggParsers, suggesters);
|
||||
SearchSourceBuilder newBuilder = SearchSourceBuilder.fromXContent(parseContext, aggParsers, suggesters);
|
||||
assertNull(parser.nextToken());
|
||||
assertEquals(testBuilder, newBuilder);
|
||||
assertEquals(testBuilder.hashCode(), newBuilder.hashCode());
|
||||
|
@ -521,7 +521,7 @@ public class SearchSourceBuilderTests extends ESTestCase {
|
|||
{
|
||||
String restContent = " { \"_source\": { \"includes\": \"include\", \"excludes\": \"*.field2\"}}";
|
||||
try (XContentParser parser = XContentFactory.xContent(restContent).createParser(restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser, createParseContext(parser),
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
aggParsers, suggesters);
|
||||
assertArrayEquals(new String[]{"*.field2"}, searchSourceBuilder.fetchSource().excludes());
|
||||
assertArrayEquals(new String[]{"include"}, searchSourceBuilder.fetchSource().includes());
|
||||
|
@ -530,7 +530,7 @@ public class SearchSourceBuilderTests extends ESTestCase {
|
|||
{
|
||||
String restContent = " { \"_source\": false}";
|
||||
try (XContentParser parser = XContentFactory.xContent(restContent).createParser(restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser, createParseContext(parser),
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
aggParsers, suggesters);
|
||||
assertArrayEquals(new String[]{}, searchSourceBuilder.fetchSource().excludes());
|
||||
assertArrayEquals(new String[]{}, searchSourceBuilder.fetchSource().includes());
|
||||
|
@ -543,7 +543,7 @@ public class SearchSourceBuilderTests extends ESTestCase {
|
|||
{
|
||||
String restContent = " { \"sort\": \"foo\"}";
|
||||
try (XContentParser parser = XContentFactory.xContent(restContent).createParser(restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser, createParseContext(parser),
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
aggParsers, suggesters);
|
||||
assertEquals(1, searchSourceBuilder.sorts().size());
|
||||
assertEquals(new FieldSortBuilder("foo"), searchSourceBuilder.sorts().get(0));
|
||||
|
@ -559,7 +559,7 @@ public class SearchSourceBuilderTests extends ESTestCase {
|
|||
" \"_score\"\n" +
|
||||
" ]}";
|
||||
try (XContentParser parser = XContentFactory.xContent(restContent).createParser(restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(parser, createParseContext(parser),
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
aggParsers, suggesters);
|
||||
assertEquals(5, searchSourceBuilder.sorts().size());
|
||||
assertEquals(new FieldSortBuilder("post_date"), searchSourceBuilder.sorts().get(0));
|
||||
|
|
|
@ -19,6 +19,14 @@
|
|||
|
||||
package org.elasticsearch.index.reindex;
|
||||
|
||||
import static org.elasticsearch.common.unit.TimeValue.parseTimeValue;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.RestStatus.BAD_REQUEST;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.elasticsearch.action.WriteConsistencyLevel;
|
||||
import org.elasticsearch.action.index.IndexRequest;
|
||||
import org.elasticsearch.action.search.SearchRequest;
|
||||
|
@ -45,14 +53,6 @@ import org.elasticsearch.script.Script;
|
|||
import org.elasticsearch.search.aggregations.AggregatorParsers;
|
||||
import org.elasticsearch.search.suggest.Suggesters;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.elasticsearch.common.unit.TimeValue.parseTimeValue;
|
||||
import static org.elasticsearch.rest.RestRequest.Method.POST;
|
||||
import static org.elasticsearch.rest.RestStatus.BAD_REQUEST;
|
||||
|
||||
/**
|
||||
* Expose IndexBySearchRequest over rest.
|
||||
*/
|
||||
|
@ -77,7 +77,7 @@ public class RestReindexAction extends AbstractBaseReindexRestHandler<ReindexReq
|
|||
builder.map(source);
|
||||
parser = parser.contentType().xContent().createParser(builder.bytes());
|
||||
context.queryParseContext.reset(parser);
|
||||
search.source().parseXContent(parser, context.queryParseContext, context.aggParsers, context.suggesters);
|
||||
search.source().parseXContent(context.queryParseContext, context.aggParsers, context.suggesters);
|
||||
};
|
||||
|
||||
ObjectParser<IndexRequest, Void> destParser = new ObjectParser<>("dest");
|
||||
|
|
Loading…
Reference in New Issue