Skip to content

Commit 0d054ab

Browse files
committed
Replace IndicesQueriesRegistry (#22289)
* Switch query parsing to namedObject * Remove IndicesQueriesRegistry
1 parent b4cd818 commit 0d054ab

File tree

74 files changed

+303
-459
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+303
-459
lines changed

core/src/main/java/org/elasticsearch/index/IndexModule.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
import org.elasticsearch.indices.breaker.CircuitBreakerService;
4949
import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache;
5050
import org.elasticsearch.indices.mapper.MapperRegistry;
51-
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
5251
import org.elasticsearch.script.ScriptService;
5352
import org.elasticsearch.threadpool.ThreadPool;
5453

@@ -325,7 +324,7 @@ public interface IndexSearcherWrapperFactory {
325324

326325
public IndexService newIndexService(NodeEnvironment environment, NamedXContentRegistry xContentRegistry,
327326
IndexService.ShardStoreDeleter shardStoreDeleter, CircuitBreakerService circuitBreakerService, BigArrays bigArrays,
328-
ThreadPool threadPool, ScriptService scriptService, IndicesQueriesRegistry indicesQueriesRegistry,
327+
ThreadPool threadPool, ScriptService scriptService,
329328
ClusterService clusterService, Client client, IndicesQueryCache indicesQueryCache, MapperRegistry mapperRegistry,
330329
IndicesFieldDataCache indicesFieldDataCache) throws IOException {
331330
final IndexEventListener eventListener = freeze();
@@ -362,7 +361,7 @@ public IndexService newIndexService(NodeEnvironment environment, NamedXContentRe
362361
}
363362
return new IndexService(indexSettings, environment, xContentRegistry, new SimilarityService(indexSettings, similarities),
364363
shardStoreDeleter, analysisRegistry, engineFactory.get(), circuitBreakerService, bigArrays, threadPool, scriptService,
365-
indicesQueriesRegistry, clusterService, client, queryCache, store, eventListener, searcherWrapperFactory, mapperRegistry,
364+
clusterService, client, queryCache, store, eventListener, searcherWrapperFactory, mapperRegistry,
366365
indicesFieldDataCache, searchOperationListeners, indexOperationListeners);
367366
}
368367

core/src/main/java/org/elasticsearch/index/IndexService.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@
6868
import org.elasticsearch.indices.cluster.IndicesClusterStateService;
6969
import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache;
7070
import org.elasticsearch.indices.mapper.MapperRegistry;
71-
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
7271
import org.elasticsearch.script.ScriptService;
7372
import org.elasticsearch.threadpool.ThreadPool;
7473

@@ -117,7 +116,6 @@ public class IndexService extends AbstractIndexComponent implements IndicesClust
117116
private final ThreadPool threadPool;
118117
private final BigArrays bigArrays;
119118
private final ScriptService scriptService;
120-
private final IndicesQueriesRegistry queryRegistry;
121119
private final ClusterService clusterService;
122120
private final Client client;
123121

@@ -131,7 +129,6 @@ public IndexService(IndexSettings indexSettings, NodeEnvironment nodeEnv,
131129
BigArrays bigArrays,
132130
ThreadPool threadPool,
133131
ScriptService scriptService,
134-
IndicesQueriesRegistry queryRegistry,
135132
ClusterService clusterService,
136133
Client client,
137134
QueryCache queryCache,
@@ -157,7 +154,6 @@ public IndexService(IndexSettings indexSettings, NodeEnvironment nodeEnv,
157154
this.bigArrays = bigArrays;
158155
this.threadPool = threadPool;
159156
this.scriptService = scriptService;
160-
this.queryRegistry = queryRegistry;
161157
this.clusterService = clusterService;
162158
this.client = client;
163159
this.eventListener = eventListener;
@@ -471,7 +467,7 @@ public IndexSettings getIndexSettings() {
471467
public QueryShardContext newQueryShardContext(int shardId, IndexReader indexReader, LongSupplier nowInMillis) {
472468
return new QueryShardContext(
473469
shardId, indexSettings, indexCache.bitsetFilterCache(), indexFieldData, mapperService(),
474-
similarityService(), scriptService, xContentRegistry, queryRegistry,
470+
similarityService(), scriptService, xContentRegistry,
475471
client, indexReader,
476472
nowInMillis);
477473
}

core/src/main/java/org/elasticsearch/index/query/MatchAllQueryBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ protected void doXContent(XContentBuilder builder, Params params) throws IOExcep
5858
builder.endObject();
5959
}
6060

61-
private static ObjectParser<MatchAllQueryBuilder, QueryParseContext> PARSER = new ObjectParser<>(NAME, MatchAllQueryBuilder::new);
61+
private static final ObjectParser<MatchAllQueryBuilder, QueryParseContext> PARSER = new ObjectParser<>(NAME, MatchAllQueryBuilder::new);
6262

6363
static {
6464
declareStandardFields(PARSER);

core/src/main/java/org/elasticsearch/index/query/QueryParseContext.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@
2525
import org.elasticsearch.common.ParsingException;
2626
import org.elasticsearch.common.logging.DeprecationLogger;
2727
import org.elasticsearch.common.logging.Loggers;
28+
import org.elasticsearch.common.xcontent.NamedXContentRegistry.UnknownNamedObjectException;
29+
import org.elasticsearch.common.xcontent.XContentLocation;
2830
import org.elasticsearch.common.xcontent.XContentParser;
29-
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
3031
import org.elasticsearch.script.Script;
3132

3233
import java.io.IOException;
@@ -41,17 +42,14 @@ public class QueryParseContext implements ParseFieldMatcherSupplier {
4142
private static final ParseField CACHE_KEY = new ParseField("_cache_key").withAllDeprecated("Filters are always used as cache keys");
4243

4344
private final XContentParser parser;
44-
private final IndicesQueriesRegistry indicesQueriesRegistry;
4545
private final ParseFieldMatcher parseFieldMatcher;
4646
private final String defaultScriptLanguage;
4747

48-
public QueryParseContext(IndicesQueriesRegistry registry, XContentParser parser, ParseFieldMatcher parseFieldMatcher) {
49-
this(Script.DEFAULT_SCRIPT_LANG, registry, parser, parseFieldMatcher);
48+
public QueryParseContext(XContentParser parser, ParseFieldMatcher parseFieldMatcher) {
49+
this(Script.DEFAULT_SCRIPT_LANG, parser, parseFieldMatcher);
5050
}
5151

52-
public QueryParseContext(String defaultScriptLanguage, IndicesQueriesRegistry registry, XContentParser parser,
53-
ParseFieldMatcher parseFieldMatcher) {
54-
this.indicesQueriesRegistry = Objects.requireNonNull(registry, "indices queries registry cannot be null");
52+
public QueryParseContext(String defaultScriptLanguage, XContentParser parser, ParseFieldMatcher parseFieldMatcher) {
5553
this.parser = Objects.requireNonNull(parser, "parser cannot be null");
5654
this.parseFieldMatcher = Objects.requireNonNull(parseFieldMatcher, "parse field matcher cannot be null");
5755
this.defaultScriptLanguage = defaultScriptLanguage;
@@ -112,9 +110,17 @@ public Optional<QueryBuilder> parseInnerQueryBuilder() throws IOException {
112110
if (parser.nextToken() != XContentParser.Token.START_OBJECT) {
113111
throw new ParsingException(parser.getTokenLocation(), "[" + queryName + "] query malformed, no start_object after query name");
114112
}
115-
@SuppressWarnings("unchecked")
116-
Optional<QueryBuilder> result = (Optional<QueryBuilder>) indicesQueriesRegistry.lookup(queryName, parseFieldMatcher,
117-
parser.getTokenLocation()).fromXContent(this);
113+
Optional<QueryBuilder> result;
114+
try {
115+
@SuppressWarnings("unchecked")
116+
Optional<QueryBuilder> resultCast = (Optional<QueryBuilder>) parser.namedObject(Optional.class, queryName, this);
117+
result = resultCast;
118+
} catch (UnknownNamedObjectException e) {
119+
// Preserve the error message from 5.0 until we have a compellingly better message so we don't break BWC.
120+
// This intentionally doesn't include the causing exception because that'd change the "root_cause" of any unknown query errors
121+
throw new ParsingException(new XContentLocation(e.getLineNumber(), e.getColumnNumber()),
122+
"no [query] registered for [" + e.getName() + "]");
123+
}
118124
//end_object of the specific query (e.g. match, multi_match etc.) element
119125
if (parser.currentToken() != XContentParser.Token.END_OBJECT) {
120126
throw new ParsingException(parser.getTokenLocation(),

core/src/main/java/org/elasticsearch/index/query/QueryRewriteContext.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.elasticsearch.common.xcontent.XContentParser;
2828
import org.elasticsearch.index.IndexSettings;
2929
import org.elasticsearch.index.mapper.MapperService;
30-
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
3130
import org.elasticsearch.script.ExecutableScript;
3231
import org.elasticsearch.script.Script;
3332
import org.elasticsearch.script.ScriptContext;
@@ -44,19 +43,17 @@ public class QueryRewriteContext implements ParseFieldMatcherSupplier {
4443
protected final ScriptService scriptService;
4544
protected final IndexSettings indexSettings;
4645
private final NamedXContentRegistry xContentRegistry;
47-
protected final IndicesQueriesRegistry indicesQueriesRegistry;
4846
protected final Client client;
4947
protected final IndexReader reader;
5048
protected final LongSupplier nowInMillis;
5149

5250
public QueryRewriteContext(IndexSettings indexSettings, MapperService mapperService, ScriptService scriptService,
53-
NamedXContentRegistry xContentRegistry, IndicesQueriesRegistry indicesQueriesRegistry, Client client, IndexReader reader,
51+
NamedXContentRegistry xContentRegistry, Client client, IndexReader reader,
5452
LongSupplier nowInMillis) {
5553
this.mapperService = mapperService;
5654
this.scriptService = scriptService;
5755
this.indexSettings = indexSettings;
5856
this.xContentRegistry = xContentRegistry;
59-
this.indicesQueriesRegistry = indicesQueriesRegistry;
6057
this.client = client;
6158
this.reader = reader;
6259
this.nowInMillis = nowInMillis;
@@ -108,7 +105,7 @@ public NamedXContentRegistry getXContentRegistry() {
108105
* are configured in the index settings. The default script language will always default to Painless.
109106
*/
110107
public QueryParseContext newParseContext(XContentParser parser) {
111-
return new QueryParseContext(indicesQueriesRegistry, parser, indexSettings.getParseFieldMatcher());
108+
return new QueryParseContext(parser, indexSettings.getParseFieldMatcher());
112109
}
113110

114111
/**
@@ -117,7 +114,7 @@ public QueryParseContext newParseContext(XContentParser parser) {
117114
*/
118115
public QueryParseContext newParseContextWithLegacyScriptLanguage(XContentParser parser) {
119116
String defaultScriptLanguage = ScriptSettings.getLegacyDefaultLang(indexSettings.getNodeSettings());
120-
return new QueryParseContext(defaultScriptLanguage, indicesQueriesRegistry, parser, indexSettings.getParseFieldMatcher());
117+
return new QueryParseContext(defaultScriptLanguage, parser, indexSettings.getParseFieldMatcher());
121118
}
122119

123120
public long nowInMillis() {

core/src/main/java/org/elasticsearch/index/query/QueryShardContext.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@
5858
import org.elasticsearch.index.mapper.TextFieldMapper;
5959
import org.elasticsearch.index.query.support.NestedScope;
6060
import org.elasticsearch.index.similarity.SimilarityService;
61-
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
6261
import org.elasticsearch.script.CompiledScript;
6362
import org.elasticsearch.script.ExecutableScript;
6463
import org.elasticsearch.script.Script;
@@ -92,32 +91,30 @@ public String[] getTypes() {
9291

9392
private final Map<String, Query> namedQueries = new HashMap<>();
9493
private final MapperQueryParser queryParser = new MapperQueryParser(this);
95-
private final IndicesQueriesRegistry indicesQueriesRegistry;
9694
private boolean allowUnmappedFields;
9795
private boolean mapUnmappedFieldAsString;
9896
private NestedScope nestedScope;
9997
private boolean isFilter;
10098

10199
public QueryShardContext(int shardId, IndexSettings indexSettings, BitsetFilterCache bitsetFilterCache,
102100
IndexFieldDataService indexFieldDataService, MapperService mapperService, SimilarityService similarityService,
103-
ScriptService scriptService, NamedXContentRegistry xContentRegistry, IndicesQueriesRegistry indicesQueriesRegistry,
101+
ScriptService scriptService, NamedXContentRegistry xContentRegistry,
104102
Client client, IndexReader reader, LongSupplier nowInMillis) {
105-
super(indexSettings, mapperService, scriptService, xContentRegistry, indicesQueriesRegistry, client, reader, nowInMillis);
103+
super(indexSettings, mapperService, scriptService, xContentRegistry, client, reader, nowInMillis);
106104
this.shardId = shardId;
107105
this.indexSettings = indexSettings;
108106
this.similarityService = similarityService;
109107
this.mapperService = mapperService;
110108
this.bitsetFilterCache = bitsetFilterCache;
111109
this.indexFieldDataService = indexFieldDataService;
112110
this.allowUnmappedFields = indexSettings.isDefaultAllowUnmappedFields();
113-
this.indicesQueriesRegistry = indicesQueriesRegistry;
114111
this.nestedScope = new NestedScope();
115112

116113
}
117114

118115
public QueryShardContext(QueryShardContext source) {
119116
this(source.shardId, source.indexSettings, source.bitsetFilterCache, source.indexFieldDataService, source.mapperService,
120-
source.similarityService, source.scriptService, source.getXContentRegistry(), source.indicesQueriesRegistry, source.client,
117+
source.similarityService, source.scriptService, source.getXContentRegistry(), source.client,
121118
source.reader, source.nowInMillis);
122119
this.types = source.getTypes();
123120
}

core/src/main/java/org/elasticsearch/indices/IndicesService.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@
104104
import org.elasticsearch.indices.cluster.IndicesClusterStateService;
105105
import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache;
106106
import org.elasticsearch.indices.mapper.MapperRegistry;
107-
import org.elasticsearch.indices.query.IndicesQueriesRegistry;
108107
import org.elasticsearch.indices.recovery.PeerRecoveryTargetService;
109108
import org.elasticsearch.indices.recovery.RecoveryState;
110109
import org.elasticsearch.plugins.PluginsService;
@@ -155,7 +154,6 @@ public class IndicesService extends AbstractLifecycleComponent
155154
private final NamedXContentRegistry xContentRegistry;
156155
private final TimeValue shardsClosedTimeout;
157156
private final AnalysisRegistry analysisRegistry;
158-
private final IndicesQueriesRegistry indicesQueriesRegistry;
159157
private final IndexNameExpressionResolver indexNameExpressionResolver;
160158
private final IndexScopedSettings indexScopeSetting;
161159
private final IndicesFieldDataCache indicesFieldDataCache;
@@ -187,7 +185,7 @@ protected void doStart() {
187185

188186
public IndicesService(Settings settings, PluginsService pluginsService, NodeEnvironment nodeEnv, NamedXContentRegistry xContentRegistry,
189187
ClusterSettings clusterSettings, AnalysisRegistry analysisRegistry,
190-
IndicesQueriesRegistry indicesQueriesRegistry, IndexNameExpressionResolver indexNameExpressionResolver,
188+
IndexNameExpressionResolver indexNameExpressionResolver,
191189
MapperRegistry mapperRegistry, NamedWriteableRegistry namedWriteableRegistry,
192190
ThreadPool threadPool, IndexScopedSettings indexScopedSettings, CircuitBreakerService circuitBreakerService,
193191
BigArrays bigArrays, ScriptService scriptService, ClusterService clusterService, Client client,
@@ -200,7 +198,6 @@ public IndicesService(Settings settings, PluginsService pluginsService, NodeEnvi
200198
this.shardsClosedTimeout = settings.getAsTime(INDICES_SHARDS_CLOSED_TIMEOUT, new TimeValue(1, TimeUnit.DAYS));
201199
this.indexStoreConfig = new IndexStoreConfig(settings);
202200
this.analysisRegistry = analysisRegistry;
203-
this.indicesQueriesRegistry = indicesQueriesRegistry;
204201
this.indexNameExpressionResolver = indexNameExpressionResolver;
205202
this.indicesRequestCache = new IndicesRequestCache(settings);
206203
this.indicesQueryCache = new IndicesQueryCache(settings);
@@ -426,7 +423,7 @@ private synchronized IndexService createIndexService(final String reason, IndexM
426423
indexModule.addIndexEventListener(listener);
427424
}
428425
return indexModule.newIndexService(nodeEnv, xContentRegistry, this, circuitBreakerService, bigArrays, threadPool, scriptService,
429-
indicesQueriesRegistry, clusterService, client, indicesQueryCache, mapperRegistry, indicesFieldDataCache);
426+
clusterService, client, indicesQueryCache, mapperRegistry, indicesFieldDataCache);
430427
}
431428

432429
/**
@@ -988,13 +985,6 @@ public boolean hasUncompletedPendingDeletes() {
988985
return numUncompletedDeletes.get() > 0;
989986
}
990987

991-
/**
992-
* Returns this nodes {@link IndicesQueriesRegistry}
993-
*/
994-
public IndicesQueriesRegistry getIndicesQueryRegistry() {
995-
return indicesQueriesRegistry;
996-
}
997-
998988
public AnalysisRegistry getAnalysis() {
999989
return analysisRegistry;
1000990
}
@@ -1239,7 +1229,7 @@ public AliasFilter buildAliasFilter(ClusterState state, String index, String...
12391229
* of dependencies we pass in a function that can perform the parsing. */
12401230
ShardSearchRequest.FilterParser filterParser = bytes -> {
12411231
try (XContentParser parser = XContentFactory.xContent(bytes).createParser(xContentRegistry, bytes)) {
1242-
return new QueryParseContext(indicesQueriesRegistry, parser, new ParseFieldMatcher(settings)).parseInnerQueryBuilder();
1232+
return new QueryParseContext(parser, new ParseFieldMatcher(settings)).parseInnerQueryBuilder();
12431233
}
12441234
};
12451235
String[] aliases = indexNameExpressionResolver.filteringAliases(state, index, expressions);

core/src/main/java/org/elasticsearch/indices/query/IndicesQueriesRegistry.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)