|
@@ -19,15 +19,18 @@
|
|
|
|
|
|
package org.elasticsearch.indices;
|
|
|
|
|
|
-import com.google.common.collect.ImmutableList;
|
|
|
-
|
|
|
+import org.apache.lucene.analysis.hunspell.Dictionary;
|
|
|
import org.elasticsearch.action.update.UpdateHelper;
|
|
|
import org.elasticsearch.cluster.metadata.MetaDataIndexUpgradeService;
|
|
|
+import org.elasticsearch.common.geo.ShapesAvailability;
|
|
|
import org.elasticsearch.common.inject.AbstractModule;
|
|
|
-import org.elasticsearch.common.inject.Module;
|
|
|
-import org.elasticsearch.common.inject.SpawnModules;
|
|
|
+import org.elasticsearch.common.inject.multibindings.MapBinder;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
-import org.elasticsearch.indices.analysis.IndicesAnalysisModule;
|
|
|
+import org.elasticsearch.common.util.ExtensionPoint;
|
|
|
+import org.elasticsearch.index.query.*;
|
|
|
+import org.elasticsearch.index.query.functionscore.FunctionScoreQueryParser;
|
|
|
+import org.elasticsearch.indices.analysis.HunspellService;
|
|
|
+import org.elasticsearch.indices.analysis.IndicesAnalysisService;
|
|
|
import org.elasticsearch.indices.cache.query.IndicesQueryCache;
|
|
|
import org.elasticsearch.indices.cache.request.IndicesRequestCache;
|
|
|
import org.elasticsearch.indices.cluster.IndicesClusterStateService;
|
|
@@ -35,7 +38,6 @@ import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache;
|
|
|
import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCacheListener;
|
|
|
import org.elasticsearch.indices.flush.SyncedFlushService;
|
|
|
import org.elasticsearch.indices.memory.IndexingMemoryController;
|
|
|
-import org.elasticsearch.indices.query.IndicesQueriesModule;
|
|
|
import org.elasticsearch.indices.recovery.RecoverySettings;
|
|
|
import org.elasticsearch.indices.recovery.RecoverySource;
|
|
|
import org.elasticsearch.indices.recovery.RecoveryTarget;
|
|
@@ -43,28 +45,100 @@ import org.elasticsearch.indices.store.IndicesStore;
|
|
|
import org.elasticsearch.indices.store.TransportNodesListShardStoreMetaData;
|
|
|
import org.elasticsearch.indices.ttl.IndicesTTLService;
|
|
|
|
|
|
+import java.security.cert.Extension;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
/**
|
|
|
- *
|
|
|
+ * Configures classes and services that are shared by indices on each node.
|
|
|
*/
|
|
|
-public class IndicesModule extends AbstractModule implements SpawnModules {
|
|
|
+public class IndicesModule extends AbstractModule {
|
|
|
|
|
|
private final Settings settings;
|
|
|
|
|
|
+ private final ExtensionPoint.ClassSet<QueryParser> queryParsers
|
|
|
+ = new ExtensionPoint.ClassSet<>("query_parser", QueryParser.class);
|
|
|
+ private final ExtensionPoint.InstanceMap<String, Dictionary> hunspellDictionaries
|
|
|
+ = new ExtensionPoint.InstanceMap<>("hunspell_dictionary", String.class, Dictionary.class);
|
|
|
+
|
|
|
public IndicesModule(Settings settings) {
|
|
|
this.settings = settings;
|
|
|
+ registerBuiltinQueryParsers();
|
|
|
}
|
|
|
+
|
|
|
+ private void registerBuiltinQueryParsers() {
|
|
|
+ registerQueryParser(MatchQueryParser.class);
|
|
|
+ registerQueryParser(MultiMatchQueryParser.class);
|
|
|
+ registerQueryParser(NestedQueryParser.class);
|
|
|
+ registerQueryParser(HasChildQueryParser.class);
|
|
|
+ registerQueryParser(HasParentQueryParser.class);
|
|
|
+ registerQueryParser(DisMaxQueryParser.class);
|
|
|
+ registerQueryParser(IdsQueryParser.class);
|
|
|
+ registerQueryParser(MatchAllQueryParser.class);
|
|
|
+ registerQueryParser(QueryStringQueryParser.class);
|
|
|
+ registerQueryParser(BoostingQueryParser.class);
|
|
|
+ registerQueryParser(BoolQueryParser.class);
|
|
|
+ registerQueryParser(TermQueryParser.class);
|
|
|
+ registerQueryParser(TermsQueryParser.class);
|
|
|
+ registerQueryParser(FuzzyQueryParser.class);
|
|
|
+ registerQueryParser(RegexpQueryParser.class);
|
|
|
+ registerQueryParser(RangeQueryParser.class);
|
|
|
+ registerQueryParser(PrefixQueryParser.class);
|
|
|
+ registerQueryParser(WildcardQueryParser.class);
|
|
|
+ registerQueryParser(FilteredQueryParser.class);
|
|
|
+ registerQueryParser(ConstantScoreQueryParser.class);
|
|
|
+ registerQueryParser(SpanTermQueryParser.class);
|
|
|
+ registerQueryParser(SpanNotQueryParser.class);
|
|
|
+ registerQueryParser(SpanWithinQueryParser.class);
|
|
|
+ registerQueryParser(SpanContainingQueryParser.class);
|
|
|
+ registerQueryParser(FieldMaskingSpanQueryParser.class);
|
|
|
+ registerQueryParser(SpanFirstQueryParser.class);
|
|
|
+ registerQueryParser(SpanNearQueryParser.class);
|
|
|
+ registerQueryParser(SpanOrQueryParser.class);
|
|
|
+ registerQueryParser(MoreLikeThisQueryParser.class);
|
|
|
+ registerQueryParser(WrapperQueryParser.class);
|
|
|
+ registerQueryParser(IndicesQueryParser.class);
|
|
|
+ registerQueryParser(CommonTermsQueryParser.class);
|
|
|
+ registerQueryParser(SpanMultiTermQueryParser.class);
|
|
|
+ registerQueryParser(FunctionScoreQueryParser.class);
|
|
|
+ registerQueryParser(SimpleQueryStringParser.class);
|
|
|
+ registerQueryParser(TemplateQueryParser.class);
|
|
|
+ registerQueryParser(TypeQueryParser.class);
|
|
|
+ registerQueryParser(LimitQueryParser.class);
|
|
|
+ registerQueryParser(ScriptQueryParser.class);
|
|
|
+ registerQueryParser(GeoDistanceQueryParser.class);
|
|
|
+ registerQueryParser(GeoDistanceRangeQueryParser.class);
|
|
|
+ registerQueryParser(GeoBoundingBoxQueryParser.class);
|
|
|
+ registerQueryParser(GeohashCellQuery.Parser.class);
|
|
|
+ registerQueryParser(GeoPolygonQueryParser.class);
|
|
|
+ registerQueryParser(QueryFilterParser.class);
|
|
|
+ registerQueryParser(FQueryFilterParser.class);
|
|
|
+ registerQueryParser(AndQueryParser.class);
|
|
|
+ registerQueryParser(OrQueryParser.class);
|
|
|
+ registerQueryParser(NotQueryParser.class);
|
|
|
+ registerQueryParser(ExistsQueryParser.class);
|
|
|
+ registerQueryParser(MissingQueryParser.class);
|
|
|
|
|
|
- @Override
|
|
|
- public Iterable<? extends Module> spawnModules() {
|
|
|
- return ImmutableList.of(new IndicesQueriesModule(), new IndicesAnalysisModule());
|
|
|
+ if (ShapesAvailability.JTS_AVAILABLE) {
|
|
|
+ registerQueryParser(GeoShapeQueryParser.class);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void registerQueryParser(Class<? extends QueryParser> queryParser) {
|
|
|
+ queryParsers.registerExtension(queryParser);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void registerHunspellDictionary(String name, Dictionary dictionary) {
|
|
|
+ hunspellDictionaries.registerExtension(name, dictionary);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected void configure() {
|
|
|
- bind(IndicesLifecycle.class).to(InternalIndicesLifecycle.class).asEagerSingleton();
|
|
|
+ bindQueryParsersExtension();
|
|
|
+ bindHunspellExtension();
|
|
|
|
|
|
+ bind(IndicesLifecycle.class).to(InternalIndicesLifecycle.class).asEagerSingleton();
|
|
|
bind(IndicesService.class).asEagerSingleton();
|
|
|
-
|
|
|
bind(RecoverySettings.class).asEagerSingleton();
|
|
|
bind(RecoveryTarget.class).asEagerSingleton();
|
|
|
bind(RecoverySource.class).asEagerSingleton();
|
|
@@ -80,7 +154,16 @@ public class IndicesModule extends AbstractModule implements SpawnModules {
|
|
|
bind(IndicesWarmer.class).asEagerSingleton();
|
|
|
bind(UpdateHelper.class).asEagerSingleton();
|
|
|
bind(MetaDataIndexUpgradeService.class).asEagerSingleton();
|
|
|
-
|
|
|
bind(IndicesFieldDataCacheListener.class).asEagerSingleton();
|
|
|
}
|
|
|
+
|
|
|
+ protected void bindQueryParsersExtension() {
|
|
|
+ queryParsers.bind(binder());
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void bindHunspellExtension() {
|
|
|
+ hunspellDictionaries.bind(binder());
|
|
|
+ bind(HunspellService.class).asEagerSingleton();
|
|
|
+ bind(IndicesAnalysisService.class).asEagerSingleton();
|
|
|
+ }
|
|
|
}
|