Replace SearchExtRegistry with namedObject (#22492)
This is one of the last things in `SearchRequestParsers`.
This commit is contained in:
parent
4f4b76cd41
commit
f4884e0726
|
@ -119,7 +119,6 @@ import org.elasticsearch.plugins.SearchPlugin;
|
|||
import org.elasticsearch.repositories.RepositoriesModule;
|
||||
import org.elasticsearch.script.ScriptModule;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
import org.elasticsearch.search.SearchExtRegistry;
|
||||
import org.elasticsearch.search.SearchModule;
|
||||
import org.elasticsearch.search.SearchRequestParsers;
|
||||
import org.elasticsearch.search.SearchService;
|
||||
|
@ -412,7 +411,6 @@ public class Node implements Closeable {
|
|||
namedWriteableRegistry, networkService, clusterService, pluginsService.filterPlugins(DiscoveryPlugin.class));
|
||||
modules.add(b -> {
|
||||
b.bind(SearchRequestParsers.class).toInstance(searchModule.getSearchRequestParsers());
|
||||
b.bind(SearchExtRegistry.class).toInstance(searchModule.getSearchExtRegistry());
|
||||
b.bind(NamedXContentRegistry.class).toInstance(xContentRegistry);
|
||||
b.bind(PluginsService.class).toInstance(pluginsService);
|
||||
b.bind(Client.class).toInstance(client);
|
||||
|
|
|
@ -25,13 +25,13 @@ import org.elasticsearch.common.io.stream.NamedWriteable;
|
|||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.io.stream.Writeable;
|
||||
import org.elasticsearch.common.lucene.search.function.ScoreFunction;
|
||||
import org.elasticsearch.common.xcontent.AbstractObjectParser.NoContextParser;
|
||||
import org.elasticsearch.common.xcontent.XContent;
|
||||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryParser;
|
||||
import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilder;
|
||||
import org.elasticsearch.index.query.functionscore.ScoreFunctionParser;
|
||||
import org.elasticsearch.search.SearchExtBuilder;
|
||||
import org.elasticsearch.search.SearchExtParser;
|
||||
import org.elasticsearch.search.aggregations.Aggregation;
|
||||
import org.elasticsearch.search.aggregations.AggregationBuilder;
|
||||
import org.elasticsearch.search.aggregations.Aggregator;
|
||||
|
@ -85,7 +85,7 @@ public interface SearchPlugin {
|
|||
return emptyList();
|
||||
}
|
||||
/**
|
||||
* The new {@link SearchExtParser}s defined by this plugin.
|
||||
* The new {@link SearchExtBuilder}s defined by this plugin.
|
||||
*/
|
||||
default List<SearchExtSpec<?>> getSearchExts() {
|
||||
return emptyList();
|
||||
|
@ -302,12 +302,12 @@ public interface SearchPlugin {
|
|||
* Specification for a {@link SearchExtBuilder} which represents an additional section that can be
|
||||
* parsed in a search request (within the ext element).
|
||||
*/
|
||||
class SearchExtSpec<T extends SearchExtBuilder> extends SearchExtensionSpec<T, SearchExtParser<T>> {
|
||||
public SearchExtSpec(ParseField name, Writeable.Reader<? extends T> reader, SearchExtParser<T> parser) {
|
||||
class SearchExtSpec<T extends SearchExtBuilder> extends SearchExtensionSpec<T, NoContextParser<T>> {
|
||||
public SearchExtSpec(ParseField name, Writeable.Reader<? extends T> reader, NoContextParser<T> parser) {
|
||||
super(name, reader, parser);
|
||||
}
|
||||
|
||||
public SearchExtSpec(String name, Writeable.Reader<? extends T> reader, SearchExtParser<T> parser) {
|
||||
public SearchExtSpec(String name, Writeable.Reader<? extends T> reader, NoContextParser<T> parser) {
|
||||
super(name, reader, parser);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -91,7 +91,7 @@ public class RestMultiSearchAction extends BaseRestHandler {
|
|||
try {
|
||||
final QueryParseContext queryParseContext = new QueryParseContext(parser, parseFieldMatcher);
|
||||
searchRequest.source(SearchSourceBuilder.fromXContent(queryParseContext,
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers));
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters));
|
||||
multiRequest.add(searchRequest);
|
||||
} catch (IOException e) {
|
||||
throw new ElasticsearchParseException("Exception when parsing search request", e);
|
||||
|
|
|
@ -93,8 +93,7 @@ public class RestSearchAction extends BaseRestHandler {
|
|||
searchRequest.indices(Strings.splitStringByCommaToArray(request.param("index")));
|
||||
if (requestContentParser != null) {
|
||||
QueryParseContext context = new QueryParseContext(requestContentParser, parseFieldMatcher);
|
||||
searchRequest.source().parseXContent(context, searchRequestParsers.aggParsers, searchRequestParsers.suggesters,
|
||||
searchRequestParsers.searchExtParsers);
|
||||
searchRequest.source().parseXContent(context, searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
}
|
||||
|
||||
// do not allow 'query_and_fetch' or 'dfs_query_and_fetch' search types
|
||||
|
|
|
@ -24,6 +24,7 @@ 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.AbstractObjectParser.NoContextParser;
|
||||
import org.elasticsearch.plugins.SearchPlugin;
|
||||
import org.elasticsearch.plugins.SearchPlugin.SearchExtSpec;
|
||||
|
||||
|
@ -34,13 +35,12 @@ import org.elasticsearch.plugins.SearchPlugin.SearchExtSpec;
|
|||
* read from the incoming stream, usually done adding a constructor that takes {@link StreamInput} as
|
||||
* an argument.
|
||||
*
|
||||
* Registration happens through {@link SearchPlugin#getSearchExts()}, which also needs a {@link SearchExtParser} that's able to parse
|
||||
* Registration happens through {@link SearchPlugin#getSearchExts()}, which also needs a {@link NoContextParser} that's able to parse
|
||||
* the incoming request from the REST layer into the proper {@link SearchExtBuilder} subclass.
|
||||
*
|
||||
* {@link #getWriteableName()} must return the same name as the one used for the registration
|
||||
* of the {@link SearchExtSpec}.
|
||||
*
|
||||
* @see SearchExtParser
|
||||
* @see SearchExtSpec
|
||||
*/
|
||||
public abstract class SearchExtBuilder implements NamedWriteable, ToXContent {
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* 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;
|
||||
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Defines a parser that is able to parse {@link org.elasticsearch.search.SearchExtBuilder}s
|
||||
* from {@link org.elasticsearch.common.xcontent.XContent}.
|
||||
*
|
||||
* Registration happens through {@link org.elasticsearch.plugins.SearchPlugin#getSearchExts()}, which also needs a {@link SearchExtBuilder}
|
||||
* implementation which is the object that this parser returns when reading an incoming request form the REST layer.
|
||||
*
|
||||
* @see SearchExtBuilder
|
||||
* @see org.elasticsearch.plugins.SearchPlugin.SearchExtSpec
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface SearchExtParser<T extends SearchExtBuilder> {
|
||||
|
||||
/**
|
||||
* Parses the supported element placed within the ext section of a search request
|
||||
*/
|
||||
T fromXContent(XContentParser parser) throws IOException;
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
/*
|
||||
* 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;
|
||||
|
||||
import org.elasticsearch.common.xcontent.ParseFieldRegistry;
|
||||
|
||||
/**
|
||||
* Extensions to ParseFieldRegistry to make Guice happy.
|
||||
*/
|
||||
public class SearchExtRegistry extends ParseFieldRegistry<SearchExtParser> {
|
||||
|
||||
public SearchExtRegistry() {
|
||||
super("ext");
|
||||
}
|
||||
}
|
|
@ -278,7 +278,6 @@ public class SearchModule {
|
|||
"moving_avg_model");
|
||||
|
||||
private final List<FetchSubPhase> fetchSubPhases = new ArrayList<>();
|
||||
private final SearchExtRegistry searchExtParserRegistry = new SearchExtRegistry();
|
||||
|
||||
private final Settings settings;
|
||||
private final List<NamedWriteableRegistry.Entry> namedWriteables = new ArrayList<>();
|
||||
|
@ -302,7 +301,7 @@ public class SearchModule {
|
|||
registerFetchSubPhases(plugins);
|
||||
registerSearchExts(plugins);
|
||||
registerShapes();
|
||||
searchRequestParsers = new SearchRequestParsers(aggregatorParsers, getSuggesters(), searchExtParserRegistry);
|
||||
searchRequestParsers = new SearchRequestParsers(aggregatorParsers, getSuggesters());
|
||||
}
|
||||
|
||||
public List<NamedWriteableRegistry.Entry> getNamedWriteables() {
|
||||
|
@ -699,7 +698,8 @@ public class SearchModule {
|
|||
}
|
||||
|
||||
private void registerSearchExt(SearchExtSpec<?> spec) {
|
||||
searchExtParserRegistry.register(spec.getParser(), spec.getName());
|
||||
// TODO merge NoContextParser and ToXContent
|
||||
namedXContents.add(new NamedXContentRegistry.Entry(SearchExtBuilder.class, spec.getName(), p -> spec.getParser().parse(p)));
|
||||
namedWriteables.add(new NamedWriteableRegistry.Entry(SearchExtBuilder.class, spec.getName().getPreferredName(), spec.getReader()));
|
||||
}
|
||||
|
||||
|
@ -782,8 +782,4 @@ public class SearchModule {
|
|||
public FetchPhase getFetchPhase() {
|
||||
return new FetchPhase(fetchSubPhases);
|
||||
}
|
||||
|
||||
public SearchExtRegistry getSearchExtRegistry() {
|
||||
return searchExtParserRegistry;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ public class SearchRequestParsers {
|
|||
/**
|
||||
* Agg and pipeline agg parsers that may be used in search requests.
|
||||
* @see org.elasticsearch.search.builder.SearchSourceBuilder#fromXContent(QueryParseContext, AggregatorParsers,
|
||||
* Suggesters, SearchExtRegistry)
|
||||
* Suggesters)
|
||||
*/
|
||||
public final AggregatorParsers aggParsers;
|
||||
|
||||
|
@ -45,18 +45,12 @@ public class SearchRequestParsers {
|
|||
/**
|
||||
* Suggesters that may be used in search requests.
|
||||
* @see org.elasticsearch.search.builder.SearchSourceBuilder#fromXContent(QueryParseContext, AggregatorParsers,
|
||||
* Suggesters, SearchExtRegistry)
|
||||
* Suggesters)
|
||||
*/
|
||||
public final Suggesters suggesters;
|
||||
|
||||
/**
|
||||
* Pluggable section that can be parsed out of a search section, within the ext element
|
||||
*/
|
||||
public final SearchExtRegistry searchExtParsers;
|
||||
|
||||
public SearchRequestParsers(AggregatorParsers aggParsers, Suggesters suggesters, SearchExtRegistry searchExtParsers) {
|
||||
public SearchRequestParsers(AggregatorParsers aggParsers, Suggesters suggesters) {
|
||||
this.aggParsers = aggParsers;
|
||||
this.suggesters = suggesters;
|
||||
this.searchExtParsers = searchExtParsers;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,8 +38,6 @@ import org.elasticsearch.index.query.QueryParseContext;
|
|||
import org.elasticsearch.index.query.QueryShardContext;
|
||||
import org.elasticsearch.script.Script;
|
||||
import org.elasticsearch.search.SearchExtBuilder;
|
||||
import org.elasticsearch.search.SearchExtParser;
|
||||
import org.elasticsearch.search.SearchExtRegistry;
|
||||
import org.elasticsearch.search.aggregations.AggregationBuilder;
|
||||
import org.elasticsearch.search.aggregations.AggregatorFactories;
|
||||
import org.elasticsearch.search.aggregations.AggregatorParsers;
|
||||
|
@ -107,9 +105,9 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|
|||
public static final ParseField ALL_FIELDS_FIELDS = new ParseField("all_fields");
|
||||
|
||||
public static SearchSourceBuilder fromXContent(QueryParseContext context, AggregatorParsers aggParsers,
|
||||
Suggesters suggesters, SearchExtRegistry searchExtRegistry) throws IOException {
|
||||
Suggesters suggesters) throws IOException {
|
||||
SearchSourceBuilder builder = new SearchSourceBuilder();
|
||||
builder.parseXContent(context, aggParsers, suggesters, searchExtRegistry);
|
||||
builder.parseXContent(context, aggParsers, suggesters);
|
||||
return builder;
|
||||
}
|
||||
|
||||
|
@ -914,10 +912,10 @@ 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(QueryParseContext, AggregatorParsers, Suggesters, SearchExtRegistry)} if you have normal defaults.
|
||||
* {@link #fromXContent(QueryParseContext, AggregatorParsers, Suggesters)} if you have normal defaults.
|
||||
*/
|
||||
public void parseXContent(QueryParseContext context, AggregatorParsers aggParsers,
|
||||
Suggesters suggesters, SearchExtRegistry searchExtRegistry)
|
||||
Suggesters suggesters)
|
||||
throws IOException {
|
||||
|
||||
XContentParser parser = context.parser();
|
||||
|
@ -1008,8 +1006,7 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
|
|||
if (token == XContentParser.Token.FIELD_NAME) {
|
||||
extSectionName = parser.currentName();
|
||||
} else {
|
||||
SearchExtParser searchExtParser = searchExtRegistry.lookup(extSectionName, parser.getTokenLocation());
|
||||
SearchExtBuilder searchExtBuilder = searchExtParser.fromXContent(parser);
|
||||
SearchExtBuilder searchExtBuilder = parser.namedObject(SearchExtBuilder.class, extSectionName, null);
|
||||
if (searchExtBuilder.getWriteableName().equals(extSectionName) == false) {
|
||||
throw new IllegalStateException("The parsed [" + searchExtBuilder.getClass().getName() + "] object has a "
|
||||
+ "different writeable name compared to the name of the section that it was parsed from: found ["
|
||||
|
|
|
@ -163,7 +163,7 @@ public class MultiSearchRequestTests extends ESTestCase {
|
|||
private MultiSearchRequest parseMultiSearchRequest(String sample) throws IOException {
|
||||
byte[] data = StreamsUtils.copyToBytesFromClasspath(sample);
|
||||
RestRequest restRequest = new FakeRestRequest.Builder(xContentRegistry()).withContent(new BytesArray(data)).build();
|
||||
return RestMultiSearchAction.parseRequest(restRequest, true, new SearchRequestParsers(null, null, null), ParseFieldMatcher.EMPTY);
|
||||
return RestMultiSearchAction.parseRequest(restRequest, true, new SearchRequestParsers(null, null), ParseFieldMatcher.EMPTY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -25,6 +25,7 @@ import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
|||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.xcontent.AbstractObjectParser.NoContextParser;
|
||||
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
|
@ -142,7 +143,7 @@ public abstract class AbstractSearchTestCase extends ESTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
private static class TestSearchExtParser<T extends SearchExtBuilder> implements SearchExtParser<T> {
|
||||
private static class TestSearchExtParser<T extends SearchExtBuilder> implements NoContextParser<T> {
|
||||
private final Function<String, T> searchExtBuilderFunction;
|
||||
|
||||
TestSearchExtParser(Function<String, T> searchExtBuilderFunction) {
|
||||
|
@ -150,7 +151,7 @@ public abstract class AbstractSearchTestCase extends ESTestCase {
|
|||
}
|
||||
|
||||
@Override
|
||||
public T fromXContent(XContentParser parser) throws IOException {
|
||||
public T parse(XContentParser parser) throws IOException {
|
||||
return searchExtBuilderFunction.apply(parseField(parser));
|
||||
}
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
// test the embedded case
|
||||
}
|
||||
SearchSourceBuilder newBuilder = SearchSourceBuilder.fromXContent(parseContext, searchRequestParsers.aggParsers,
|
||||
searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.suggesters);
|
||||
assertNull(parser.nextToken());
|
||||
assertEquals(testBuilder, newBuilder);
|
||||
assertEquals(testBuilder.hashCode(), newBuilder.hashCode());
|
||||
|
@ -114,7 +114,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
String restContent = " { \"_source\": { \"includes\": \"include\", \"excludes\": \"*.field2\"}}";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertArrayEquals(new String[]{"*.field2"}, searchSourceBuilder.fetchSource().excludes());
|
||||
assertArrayEquals(new String[]{"include"}, searchSourceBuilder.fetchSource().includes());
|
||||
}
|
||||
|
@ -123,7 +123,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
String restContent = " { \"_source\": false}";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertArrayEquals(new String[]{}, searchSourceBuilder.fetchSource().excludes());
|
||||
assertArrayEquals(new String[]{}, searchSourceBuilder.fetchSource().includes());
|
||||
assertFalse(searchSourceBuilder.fetchSource().fetchSource());
|
||||
|
@ -146,7 +146,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
" } }";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
ParsingException e = expectThrows(ParsingException.class, () -> SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers));
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters));
|
||||
assertEquals("[multi_match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
@ -156,7 +156,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
String restContent = " { \"sort\": \"foo\"}";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertEquals(1, searchSourceBuilder.sorts().size());
|
||||
assertEquals(new FieldSortBuilder("foo"), searchSourceBuilder.sorts().get(0));
|
||||
}
|
||||
|
@ -172,7 +172,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
" ]}";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertEquals(5, searchSourceBuilder.sorts().size());
|
||||
assertEquals(new FieldSortBuilder("post_date"), searchSourceBuilder.sorts().get(0));
|
||||
assertEquals(new FieldSortBuilder("user"), searchSourceBuilder.sorts().get(1));
|
||||
|
@ -196,7 +196,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
"}\n";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertEquals(1, searchSourceBuilder.aggregations().count());
|
||||
}
|
||||
}
|
||||
|
@ -212,7 +212,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
"}\n";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertEquals(1, searchSourceBuilder.aggregations().count());
|
||||
}
|
||||
}
|
||||
|
@ -238,7 +238,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
"}\n";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertEquals(1, searchSourceBuilder.rescores().size());
|
||||
assertEquals(new QueryRescorerBuilder(QueryBuilders.matchQuery("content", "baz")).windowSize(50),
|
||||
searchSourceBuilder.rescores().get(0));
|
||||
|
@ -261,7 +261,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
"}\n";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertEquals(1, searchSourceBuilder.rescores().size());
|
||||
assertEquals(new QueryRescorerBuilder(QueryBuilders.matchQuery("content", "baz")).windowSize(50),
|
||||
searchSourceBuilder.rescores().get(0));
|
||||
|
@ -274,7 +274,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
final String query = "{ \"query\": { \"match_all\": {}}, \"timeout\": \"" + timeout + "\"}";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, query)) {
|
||||
final SearchSourceBuilder builder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertThat(builder.timeout(), equalTo(TimeValue.parseTimeValue(timeout, null, "timeout")));
|
||||
}
|
||||
}
|
||||
|
@ -287,7 +287,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
expectThrows(
|
||||
ElasticsearchParseException.class,
|
||||
() -> SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers));
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters));
|
||||
assertThat(e, hasToString(containsString("unit is missing or unrecognized")));
|
||||
}
|
||||
}
|
||||
|
@ -320,7 +320,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
String restContent = " { \"indices_boost\": {\"foo\": 1.0, \"bar\": 2.0}}";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertEquals(2, searchSourceBuilder.indexBoosts().size());
|
||||
assertEquals(new SearchSourceBuilder.IndexBoost("foo", 1.0f), searchSourceBuilder.indexBoosts().get(0));
|
||||
assertEquals(new SearchSourceBuilder.IndexBoost("bar", 2.0f), searchSourceBuilder.indexBoosts().get(1));
|
||||
|
@ -337,7 +337,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
" ]}";
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
assertEquals(3, searchSourceBuilder.indexBoosts().size());
|
||||
assertEquals(new SearchSourceBuilder.IndexBoost("foo", 1.0f), searchSourceBuilder.indexBoosts().get(0));
|
||||
assertEquals(new SearchSourceBuilder.IndexBoost("bar", 2.0f), searchSourceBuilder.indexBoosts().get(1));
|
||||
|
@ -385,7 +385,7 @@ public class SearchSourceBuilderTests extends AbstractSearchTestCase {
|
|||
private void assertIndicesBoostParseErrorMessage(String restContent, String expectedErrorMessage) throws IOException {
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, restContent)) {
|
||||
ParsingException e = expectThrows(ParsingException.class, () -> SearchSourceBuilder.fromXContent(createParseContext(parser),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers));
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters));
|
||||
assertEquals(expectedErrorMessage, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,6 @@ import org.elasticsearch.index.termvectors.TermVectorsService;
|
|||
import org.elasticsearch.plugins.Plugin;
|
||||
import org.elasticsearch.plugins.SearchPlugin;
|
||||
import org.elasticsearch.search.SearchExtBuilder;
|
||||
import org.elasticsearch.search.SearchExtParser;
|
||||
import org.elasticsearch.search.SearchHitField;
|
||||
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
||||
import org.elasticsearch.search.internal.InternalSearchHitField;
|
||||
|
@ -114,7 +113,7 @@ public class FetchSubPhasePluginIT extends ESIntegTestCase {
|
|||
@Override
|
||||
public List<SearchExtSpec<?>> getSearchExts() {
|
||||
return Collections.singletonList(new SearchExtSpec<>(TermVectorsFetchSubPhase.NAME,
|
||||
TermVectorsFetchBuilder::new, TermVectorsFetchParser.INSTANCE));
|
||||
TermVectorsFetchBuilder::new, TermVectorsFetchBuilder::fromXContent));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -153,15 +152,8 @@ public class FetchSubPhasePluginIT extends ESIntegTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
private static final class TermVectorsFetchParser implements SearchExtParser<TermVectorsFetchBuilder> {
|
||||
|
||||
private static final TermVectorsFetchParser INSTANCE = new TermVectorsFetchParser();
|
||||
|
||||
private TermVectorsFetchParser() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public TermVectorsFetchBuilder fromXContent(XContentParser parser) throws IOException {
|
||||
private static final class TermVectorsFetchBuilder extends SearchExtBuilder {
|
||||
public static TermVectorsFetchBuilder fromXContent(XContentParser parser) throws IOException {
|
||||
String field;
|
||||
XContentParser.Token token = parser.currentToken();
|
||||
if (token == XContentParser.Token.VALUE_STRING) {
|
||||
|
@ -174,9 +166,7 @@ public class FetchSubPhasePluginIT extends ESIntegTestCase {
|
|||
}
|
||||
return new TermVectorsFetchBuilder(field);
|
||||
}
|
||||
}
|
||||
|
||||
private static final class TermVectorsFetchBuilder extends SearchExtBuilder {
|
||||
private final String field;
|
||||
|
||||
private TermVectorsFetchBuilder(String field) {
|
||||
|
|
|
@ -89,7 +89,7 @@ public class TransportSearchTemplateAction extends HandledTransportAction<Search
|
|||
try (XContentParser parser = XContentFactory.xContent(source).createParser(xContentRegistry, source)) {
|
||||
SearchSourceBuilder builder = SearchSourceBuilder.searchSource();
|
||||
builder.parseXContent(new QueryParseContext(parser, parseFieldMatcher),
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.suggesters);
|
||||
builder.explain(request.isExplain());
|
||||
builder.profile(request.isProfile());
|
||||
searchRequest.source(builder);
|
||||
|
|
|
@ -158,7 +158,7 @@ public class TransportMultiPercolateAction extends HandledTransportAction<MultiP
|
|||
try {
|
||||
SearchRequest searchRequest = TransportPercolateAction.createSearchRequest(
|
||||
percolateRequest, docSource,
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.searchExtParsers, xContentRegistry, parseFieldMatcher);
|
||||
searchRequestParsers.aggParsers, xContentRegistry, parseFieldMatcher);
|
||||
multiSearchRequest.add(searchRequest);
|
||||
} catch (Exception e) {
|
||||
preFailures.put(i, new MultiPercolateResponse.Item(e));
|
||||
|
|
|
@ -45,7 +45,6 @@ import org.elasticsearch.index.query.BoolQueryBuilder;
|
|||
import org.elasticsearch.index.query.ConstantScoreQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.search.SearchExtRegistry;
|
||||
import org.elasticsearch.search.SearchHit;
|
||||
import org.elasticsearch.search.SearchHits;
|
||||
import org.elasticsearch.search.SearchRequestParsers;
|
||||
|
@ -105,7 +104,7 @@ public class TransportPercolateAction extends HandledTransportAction<PercolateRe
|
|||
SearchRequest searchRequest;
|
||||
try {
|
||||
searchRequest = createSearchRequest(request, docSource,
|
||||
searchRequestParsers.aggParsers, searchRequestParsers.searchExtParsers, xContentRegistry, parseFieldMatcher);
|
||||
searchRequestParsers.aggParsers, xContentRegistry, parseFieldMatcher);
|
||||
} catch (IOException e) {
|
||||
listener.onFailure(e);
|
||||
return;
|
||||
|
@ -129,7 +128,7 @@ public class TransportPercolateAction extends HandledTransportAction<PercolateRe
|
|||
|
||||
public static SearchRequest createSearchRequest(PercolateRequest percolateRequest, BytesReference documentSource,
|
||||
AggregatorParsers aggParsers,
|
||||
SearchExtRegistry searchExtRegistry, NamedXContentRegistry xContentRegistry,
|
||||
NamedXContentRegistry xContentRegistry,
|
||||
ParseFieldMatcher parseFieldMatcher)
|
||||
throws IOException {
|
||||
SearchRequest searchRequest = new SearchRequest();
|
||||
|
@ -230,7 +229,7 @@ public class TransportPercolateAction extends HandledTransportAction<PercolateRe
|
|||
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
|
||||
try (XContentParser parser = XContentFactory.xContent(XContentType.JSON).createParser(xContentRegistry, source)) {
|
||||
QueryParseContext context = new QueryParseContext(parser, parseFieldMatcher);
|
||||
searchSourceBuilder.parseXContent(context, aggParsers, null, searchExtRegistry);
|
||||
searchSourceBuilder.parseXContent(context, aggParsers, null);
|
||||
searchRequest.source(searchSourceBuilder);
|
||||
return searchRequest;
|
||||
}
|
||||
|
|
|
@ -82,8 +82,7 @@ public class RestReindexAction extends AbstractBaseReindexRestHandler<ReindexReq
|
|||
builder.map(source);
|
||||
try (XContentParser innerParser = parser.contentType().xContent().createParser(parser.getXContentRegistry(), builder.bytes())) {
|
||||
request.getSearchRequest().source().parseXContent(context.queryParseContext(innerParser),
|
||||
context.searchRequestParsers.aggParsers, context.searchRequestParsers.suggesters,
|
||||
context.searchRequestParsers.searchExtParsers);
|
||||
context.searchRequestParsers.aggParsers, context.searchRequestParsers.suggesters);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -124,7 +124,7 @@ public class RestReindexActionTests extends ESTestCase {
|
|||
}
|
||||
try (XContentParser p = createParser(JsonXContent.jsonXContent, request)) {
|
||||
ReindexRequest r = new ReindexRequest(new SearchRequest(), new IndexRequest());
|
||||
SearchRequestParsers searchParsers = new SearchRequestParsers(null, null, null);
|
||||
SearchRequestParsers searchParsers = new SearchRequestParsers(null, null);
|
||||
RestReindexAction.PARSER.parse(p, r, new ReindexParseContext(searchParsers, ParseFieldMatcher.STRICT));
|
||||
assertEquals("localhost", r.getRemoteInfo().getHost());
|
||||
assertArrayEquals(new String[] {"source"}, r.getSearchRequest().indices());
|
||||
|
@ -132,7 +132,7 @@ public class RestReindexActionTests extends ESTestCase {
|
|||
}
|
||||
|
||||
public void testPipelineQueryParameterIsError() throws IOException {
|
||||
SearchRequestParsers parsers = new SearchRequestParsers(null, null, null);
|
||||
SearchRequestParsers parsers = new SearchRequestParsers(null, null);
|
||||
RestReindexAction action = new RestReindexAction(Settings.EMPTY, mock(RestController.class), parsers, null);
|
||||
|
||||
FakeRestRequest.Builder request = new FakeRestRequest.Builder(xContentRegistry());
|
||||
|
|
Loading…
Reference in New Issue