@@ -293,13 +293,13 @@ private <T> Map<String, T> buildMapping(Component component, IndexSettings setti
293293 T factory = null ;
294294 if (typeName == null ) {
295295 if (currentSettings .get ("tokenizer" ) != null ) {
296- factory = (T ) new CustomAnalyzerProvider (settings , name , currentSettings , environment );
296+ factory = (T ) new CustomAnalyzerProvider (settings , name , currentSettings );
297297 } else {
298298 throw new IllegalArgumentException (component + " [" + name + "] " +
299299 "must specify either an analyzer type, or a tokenizer" );
300300 }
301301 } else if (typeName .equals ("custom" )) {
302- factory = (T ) new CustomAnalyzerProvider (settings , name , currentSettings , environment );
302+ factory = (T ) new CustomAnalyzerProvider (settings , name , currentSettings );
303303 }
304304 if (factory != null ) {
305305 factories .put (name , factory );
@@ -430,8 +430,10 @@ public IndexAnalyzers build(IndexSettings indexSettings,
430430 Map <String , NamedAnalyzer > normalizers = new HashMap <>();
431431 Map <String , NamedAnalyzer > whitespaceNormalizers = new HashMap <>();
432432 for (Map .Entry <String , AnalyzerProvider <?>> entry : analyzerProviders .entrySet ()) {
433- processAnalyzerFactory (indexSettings , entry .getKey (), entry .getValue (), analyzers ,
434- tokenFilterFactoryFactories , charFilterFactoryFactories , tokenizerFactoryFactories );
433+ analyzers .merge (entry .getKey (), produceAnalyzer (entry .getKey (), entry .getValue (), tokenFilterFactoryFactories ,
434+ charFilterFactoryFactories , tokenizerFactoryFactories ), (k , v ) -> {
435+ throw new IllegalStateException ("already registered analyzer with name: " + entry .getKey ());
436+ });
435437 }
436438 for (Map .Entry <String , AnalyzerProvider <?>> entry : normalizerProviders .entrySet ()) {
437439 processNormalizerFactory (entry .getKey (), entry .getValue (), normalizers , "keyword" ,
@@ -441,9 +443,9 @@ public IndexAnalyzers build(IndexSettings indexSettings,
441443 }
442444
443445 if (!analyzers .containsKey ("default" )) {
444- processAnalyzerFactory ( indexSettings , "default" , new StandardAnalyzerProvider (indexSettings , null ,
445- "default" , Settings .Builder .EMPTY_SETTINGS ),
446- analyzers , tokenFilterFactoryFactories , charFilterFactoryFactories , tokenizerFactoryFactories );
446+ NamedAnalyzer defaultAnalyzer = produceAnalyzer ( "default" , new StandardAnalyzerProvider (indexSettings , null , "default" ,
447+ Settings .Builder .EMPTY_SETTINGS ), tokenFilterFactoryFactories , charFilterFactoryFactories , tokenizerFactoryFactories );
448+ analyzers . put ( "default" , defaultAnalyzer );
447449 }
448450 if (!analyzers .containsKey ("default_search" )) {
449451 analyzers .put ("default_search" , analyzers .get ("default" ));
@@ -473,11 +475,9 @@ public IndexAnalyzers build(IndexSettings indexSettings,
473475 whitespaceNormalizers );
474476 }
475477
476- private void processAnalyzerFactory (IndexSettings indexSettings ,
477- String name ,
478- AnalyzerProvider <?> analyzerFactory ,
479- Map <String , NamedAnalyzer > analyzers , Map <String , TokenFilterFactory > tokenFilters ,
480- Map <String , CharFilterFactory > charFilters , Map <String , TokenizerFactory > tokenizers ) {
478+ private static NamedAnalyzer produceAnalyzer (String name , AnalyzerProvider <?> analyzerFactory ,
479+ Map <String , TokenFilterFactory > tokenFilters , Map <String , CharFilterFactory > charFilters ,
480+ Map <String , TokenizerFactory > tokenizers ) {
481481 /*
482482 * Lucene defaults positionIncrementGap to 0 in all analyzers but
483483 * Elasticsearch defaults them to 0 only before version 2.0
@@ -511,15 +511,7 @@ private void processAnalyzerFactory(IndexSettings indexSettings,
511511 } else {
512512 analyzer = new NamedAnalyzer (name , analyzerFactory .scope (), analyzerF , overridePositionIncrementGap );
513513 }
514- if (analyzers .containsKey (name )) {
515- throw new IllegalStateException ("already registered analyzer with name: " + name );
516- }
517- analyzers .put (name , analyzer );
518- // TODO: remove alias support completely when we no longer support pre 5.0 indices
519- final String analyzerAliasKey = "index.analysis.analyzer." + analyzerFactory .name () + ".alias" ;
520- if (indexSettings .getSettings ().get (analyzerAliasKey ) != null ) {
521- throw new IllegalArgumentException ("setting [" + analyzerAliasKey + "] is not supported" );
522- }
514+ return analyzer ;
523515 }
524516
525517 private void processNormalizerFactory (
0 commit comments