Skip to content

Commit efe47ce

Browse files
author
Christoph Büscher
authored
Small refactorings to analysis components (#40745)
This change add the following internal refactorings: * wraps input analyzers into an unmodifiable map in IndexAnalyzers ctor * removes duplicated indexSetting in IndexAnalyzers * removes references to IndexAnalyzers from DocumentMapperParser and TypeParser.ParserContext. It can always be retrieve it from MapperService directly in those cases
1 parent 6be8396 commit efe47ce

File tree

8 files changed

+29
-45
lines changed

8 files changed

+29
-45
lines changed

plugins/mapper-murmur3/src/test/java/org/elasticsearch/index/mapper/murmur3/Murmur3FieldMapperTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ public void setup() {
6363
Supplier<QueryShardContext> queryShardContext = () -> {
6464
return indexService.newQueryShardContext(0, null, () -> { throw new UnsupportedOperationException(); }, null);
6565
};
66-
parser = new DocumentMapperParser(indexService.getIndexSettings(), indexService.mapperService(), indexService.getIndexAnalyzers(),
67-
indexService.xContentRegistry(), indexService.similarityService(), mapperRegistry, queryShardContext);
66+
parser = new DocumentMapperParser(indexService.getIndexSettings(), indexService.mapperService(), indexService.xContentRegistry(),
67+
indexService.similarityService(), mapperRegistry, queryShardContext);
6868
}
6969

7070
@Override

server/src/main/java/org/elasticsearch/index/analysis/AnalysisRegistry.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -466,8 +466,8 @@ public IndexAnalyzers build(IndexSettings indexSettings,
466466
throw new IllegalArgumentException("analyzer name must not start with '_'. got \"" + analyzer.getKey() + "\"");
467467
}
468468
}
469-
return new IndexAnalyzers(indexSettings, defaultAnalyzer, defaultSearchAnalyzer, defaultSearchQuoteAnalyzer,
470-
unmodifiableMap(analyzers), unmodifiableMap(normalizers), unmodifiableMap(whitespaceNormalizers));
469+
return new IndexAnalyzers(indexSettings, defaultAnalyzer, defaultSearchAnalyzer, defaultSearchQuoteAnalyzer, analyzers, normalizers,
470+
whitespaceNormalizers);
471471
}
472472

473473
private void processAnalyzerFactory(IndexSettings indexSettings,

server/src/main/java/org/elasticsearch/index/analysis/IndexAnalyzers.java

+5-13
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import java.util.Map;
2828
import java.util.stream.Stream;
2929

30+
import static java.util.Collections.unmodifiableMap;
31+
3032
/**
3133
* IndexAnalyzers contains a name to analyzer mapping for a specific index.
3234
* This class only holds analyzers that are explicitly configured for an index and doesn't allow
@@ -41,7 +43,6 @@ public final class IndexAnalyzers extends AbstractIndexComponent implements Clos
4143
private final Map<String, NamedAnalyzer> analyzers;
4244
private final Map<String, NamedAnalyzer> normalizers;
4345
private final Map<String, NamedAnalyzer> whitespaceNormalizers;
44-
private final IndexSettings indexSettings;
4546

4647
public IndexAnalyzers(IndexSettings indexSettings, NamedAnalyzer defaultIndexAnalyzer, NamedAnalyzer defaultSearchAnalyzer,
4748
NamedAnalyzer defaultSearchQuoteAnalyzer, Map<String, NamedAnalyzer> analyzers,
@@ -53,10 +54,9 @@ public IndexAnalyzers(IndexSettings indexSettings, NamedAnalyzer defaultIndexAna
5354
this.defaultIndexAnalyzer = defaultIndexAnalyzer;
5455
this.defaultSearchAnalyzer = defaultSearchAnalyzer;
5556
this.defaultSearchQuoteAnalyzer = defaultSearchQuoteAnalyzer;
56-
this.analyzers = analyzers;
57-
this.normalizers = normalizers;
58-
this.whitespaceNormalizers = whitespaceNormalizers;
59-
this.indexSettings = indexSettings;
57+
this.analyzers = unmodifiableMap(analyzers);
58+
this.normalizers = unmodifiableMap(normalizers);
59+
this.whitespaceNormalizers = unmodifiableMap(whitespaceNormalizers);
6060
}
6161

6262
/**
@@ -107,12 +107,4 @@ public void close() throws IOException {
107107
.filter(a -> a.scope() == AnalyzerScope.INDEX)
108108
.iterator());
109109
}
110-
111-
/**
112-
* Returns the indices settings
113-
*/
114-
public IndexSettings getIndexSettings() {
115-
return indexSettings;
116-
}
117-
118110
}

server/src/main/java/org/elasticsearch/index/mapper/DocumentMapperParser.java

+3-7
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.elasticsearch.common.xcontent.XContentParser;
3030
import org.elasticsearch.common.xcontent.XContentType;
3131
import org.elasticsearch.index.IndexSettings;
32-
import org.elasticsearch.index.analysis.IndexAnalyzers;
3332
import org.elasticsearch.index.query.QueryShardContext;
3433
import org.elasticsearch.index.similarity.SimilarityService;
3534
import org.elasticsearch.indices.mapper.MapperRegistry;
@@ -44,7 +43,6 @@
4443
public class DocumentMapperParser {
4544

4645
final MapperService mapperService;
47-
final IndexAnalyzers indexAnalyzers;
4846
private final NamedXContentRegistry xContentRegistry;
4947
private final SimilarityService similarityService;
5048
private final Supplier<QueryShardContext> queryShardContextSupplier;
@@ -56,11 +54,9 @@ public class DocumentMapperParser {
5654
private final Map<String, Mapper.TypeParser> typeParsers;
5755
private final Map<String, MetadataFieldMapper.TypeParser> rootTypeParsers;
5856

59-
public DocumentMapperParser(IndexSettings indexSettings, MapperService mapperService, IndexAnalyzers indexAnalyzers,
60-
NamedXContentRegistry xContentRegistry, SimilarityService similarityService, MapperRegistry mapperRegistry,
61-
Supplier<QueryShardContext> queryShardContextSupplier) {
57+
public DocumentMapperParser(IndexSettings indexSettings, MapperService mapperService, NamedXContentRegistry xContentRegistry,
58+
SimilarityService similarityService, MapperRegistry mapperRegistry, Supplier<QueryShardContext> queryShardContextSupplier) {
6259
this.mapperService = mapperService;
63-
this.indexAnalyzers = indexAnalyzers;
6460
this.xContentRegistry = xContentRegistry;
6561
this.similarityService = similarityService;
6662
this.queryShardContextSupplier = queryShardContextSupplier;
@@ -70,7 +66,7 @@ public DocumentMapperParser(IndexSettings indexSettings, MapperService mapperSer
7066
}
7167

7268
public Mapper.TypeParser.ParserContext parserContext(String type) {
73-
return new Mapper.TypeParser.ParserContext(type, indexAnalyzers, similarityService::getSimilarity, mapperService,
69+
return new Mapper.TypeParser.ParserContext(type, similarityService::getSimilarity, mapperService,
7470
typeParsers::get, indexVersionCreated, queryShardContextSupplier);
7571
}
7672

server/src/main/java/org/elasticsearch/index/mapper/Mapper.java

+3-6
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,6 @@ class ParserContext {
8080

8181
private final String type;
8282

83-
private final IndexAnalyzers indexAnalyzers;
84-
8583
private final Function<String, SimilarityProvider> similarityLookupService;
8684

8785
private final MapperService mapperService;
@@ -92,11 +90,10 @@ class ParserContext {
9290

9391
private final Supplier<QueryShardContext> queryShardContextSupplier;
9492

95-
public ParserContext(String type, IndexAnalyzers indexAnalyzers, Function<String, SimilarityProvider> similarityLookupService,
93+
public ParserContext(String type, Function<String, SimilarityProvider> similarityLookupService,
9694
MapperService mapperService, Function<String, TypeParser> typeParsers,
9795
Version indexVersionCreated, Supplier<QueryShardContext> queryShardContextSupplier) {
9896
this.type = type;
99-
this.indexAnalyzers = indexAnalyzers;
10097
this.similarityLookupService = similarityLookupService;
10198
this.mapperService = mapperService;
10299
this.typeParsers = typeParsers;
@@ -109,7 +106,7 @@ public String type() {
109106
}
110107

111108
public IndexAnalyzers getIndexAnalyzers() {
112-
return indexAnalyzers;
109+
return mapperService.getIndexAnalyzers();
113110
}
114111

115112
public SimilarityProvider getSimilarity(String name) {
@@ -147,7 +144,7 @@ public ParserContext createMultiFieldContext(ParserContext in) {
147144

148145
static class MultiFieldParserContext extends ParserContext {
149146
MultiFieldParserContext(ParserContext in) {
150-
super(in.type(), in.indexAnalyzers, in.similarityLookupService(), in.mapperService(), in.typeParsers(),
147+
super(in.type(), in.similarityLookupService(), in.mapperService(), in.typeParsers(),
151148
in.indexVersionCreated(), in.queryShardContextSupplier());
152149
}
153150
}

server/src/main/java/org/elasticsearch/index/mapper/MapperService.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import com.carrotsearch.hppc.ObjectHashSet;
2323
import com.carrotsearch.hppc.cursors.ObjectCursor;
24+
2425
import org.apache.logging.log4j.LogManager;
2526
import org.apache.logging.log4j.message.ParameterizedMessage;
2627
import org.apache.lucene.analysis.Analyzer;
@@ -148,8 +149,8 @@ public MapperService(IndexSettings indexSettings, IndexAnalyzers indexAnalyzers,
148149
super(indexSettings);
149150
this.indexAnalyzers = indexAnalyzers;
150151
this.fieldTypes = new FieldTypeLookup();
151-
this.documentParser = new DocumentMapperParser(indexSettings, this, indexAnalyzers, xContentRegistry, similarityService,
152-
mapperRegistry, queryShardContextSupplier);
152+
this.documentParser = new DocumentMapperParser(indexSettings, this, xContentRegistry, similarityService, mapperRegistry,
153+
queryShardContextSupplier);
153154
this.indexAnalyzer = new MapperAnalyzerWrapper(indexAnalyzers.getDefaultIndexAnalyzer(), p -> p.indexAnalyzer());
154155
this.searchAnalyzer = new MapperAnalyzerWrapper(indexAnalyzers.getDefaultSearchAnalyzer(), p -> p.searchAnalyzer());
155156
this.searchQuoteAnalyzer = new MapperAnalyzerWrapper(indexAnalyzers.getDefaultSearchQuoteAnalyzer(), p -> p.searchQuoteAnalyzer());

server/src/test/java/org/elasticsearch/index/mapper/ExternalFieldMapperTests.java

+3-6
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ public void testExternalValues() throws Exception {
7575
return indexService.newQueryShardContext(0, null, () -> { throw new UnsupportedOperationException(); }, null);
7676
};
7777
DocumentMapperParser parser = new DocumentMapperParser(indexService.getIndexSettings(), indexService.mapperService(),
78-
indexService.getIndexAnalyzers(), indexService.xContentRegistry(), indexService.similarityService(), mapperRegistry,
79-
queryShardContext);
78+
indexService.xContentRegistry(), indexService.similarityService(), mapperRegistry, queryShardContext);
8079
DocumentMapper documentMapper = parser.parse("type", new CompressedXContent(
8180
Strings.toString(XContentFactory.jsonBuilder().startObject().startObject("type")
8281
.startObject(ExternalMetadataMapper.CONTENT_TYPE)
@@ -123,8 +122,7 @@ public void testExternalValuesWithMultifield() throws Exception {
123122
return indexService.newQueryShardContext(0, null, () -> { throw new UnsupportedOperationException(); }, null);
124123
};
125124
DocumentMapperParser parser = new DocumentMapperParser(indexService.getIndexSettings(), indexService.mapperService(),
126-
indexService.getIndexAnalyzers(), indexService.xContentRegistry(), indexService.similarityService(), mapperRegistry,
127-
queryShardContext);
125+
indexService.xContentRegistry(), indexService.similarityService(), mapperRegistry, queryShardContext);
128126

129127
DocumentMapper documentMapper = parser.parse("type", new CompressedXContent(
130128
Strings
@@ -186,8 +184,7 @@ public void testExternalValuesWithMultifieldTwoLevels() throws Exception {
186184
return indexService.newQueryShardContext(0, null, () -> { throw new UnsupportedOperationException(); }, null);
187185
};
188186
DocumentMapperParser parser = new DocumentMapperParser(indexService.getIndexSettings(), indexService.mapperService(),
189-
indexService.getIndexAnalyzers(), indexService.xContentRegistry(), indexService.similarityService(), mapperRegistry,
190-
queryShardContext);
187+
indexService.xContentRegistry(), indexService.similarityService(), mapperRegistry, queryShardContext);
191188

192189
DocumentMapper documentMapper = parser.parse("type", new CompressedXContent(
193190
Strings

server/src/test/java/org/elasticsearch/index/mapper/TypeParsersTests.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.elasticsearch.index.analysis.TokenFilterFactory;
3737
import org.elasticsearch.test.ESTestCase;
3838

39+
import java.util.Collections;
3940
import java.util.HashMap;
4041
import java.util.Map;
4142

@@ -60,8 +61,8 @@ public void testParseTextFieldCheckAnalyzerAnalysisMode() {
6061
analyzers.put("my_analyzer",
6162
new NamedAnalyzer("my_named_analyzer", AnalyzerScope.INDEX, createAnalyzerWithMode("my_analyzer", AnalysisMode.ALL)));
6263

63-
IndexAnalyzers indexAnalyzers = new IndexAnalyzers(indexSettings,
64-
new NamedAnalyzer("default", AnalyzerScope.INDEX, null), null, null, analyzers, null, null);
64+
IndexAnalyzers indexAnalyzers = new IndexAnalyzers(indexSettings, new NamedAnalyzer("default", AnalyzerScope.INDEX, null), null,
65+
null, analyzers, Collections.emptyMap(), Collections.emptyMap());
6566
when(parserContext.getIndexAnalyzers()).thenReturn(indexAnalyzers);
6667
TypeParsers.parseTextField(builder, "name", new HashMap<>(fieldNode), parserContext);
6768

@@ -71,7 +72,7 @@ public void testParseTextFieldCheckAnalyzerAnalysisMode() {
7172
analyzers.put("my_analyzer", new NamedAnalyzer("my_named_analyzer", AnalyzerScope.INDEX,
7273
createAnalyzerWithMode("my_analyzer", mode)));
7374
indexAnalyzers = new IndexAnalyzers(indexSettings, new NamedAnalyzer("default", AnalyzerScope.INDEX, null), null, null, analyzers,
74-
null, null);
75+
Collections.emptyMap(), Collections.emptyMap());
7576
when(parserContext.getIndexAnalyzers()).thenReturn(indexAnalyzers);
7677
MapperException ex = expectThrows(MapperException.class,
7778
() -> TypeParsers.parseTextField(builder, "name", new HashMap<>(fieldNode), parserContext));
@@ -98,7 +99,7 @@ public void testParseTextFieldCheckSearchAnalyzerAnalysisMode() {
9899
analyzers.put("standard", new NamedAnalyzer("standard", AnalyzerScope.INDEX, new StandardAnalyzer()));
99100

100101
IndexAnalyzers indexAnalyzers = new IndexAnalyzers(indexSettings, new NamedAnalyzer("default", AnalyzerScope.INDEX, null), null,
101-
null, analyzers, null, null);
102+
null, analyzers, Collections.emptyMap(), Collections.emptyMap());
102103
when(parserContext.getIndexAnalyzers()).thenReturn(indexAnalyzers);
103104
TypeParsers.parseTextField(builder, "name", new HashMap<>(fieldNode), parserContext);
104105

@@ -109,7 +110,7 @@ public void testParseTextFieldCheckSearchAnalyzerAnalysisMode() {
109110
new NamedAnalyzer("my_named_analyzer", AnalyzerScope.INDEX, createAnalyzerWithMode("my_analyzer", mode)));
110111
analyzers.put("standard", new NamedAnalyzer("standard", AnalyzerScope.INDEX, new StandardAnalyzer()));
111112
indexAnalyzers = new IndexAnalyzers(indexSettings, new NamedAnalyzer("default", AnalyzerScope.INDEX, null), null, null,
112-
analyzers, null, null);
113+
analyzers, Collections.emptyMap(), Collections.emptyMap());
113114
when(parserContext.getIndexAnalyzers()).thenReturn(indexAnalyzers);
114115
MapperException ex = expectThrows(MapperException.class,
115116
() -> TypeParsers.parseTextField(builder, "name", new HashMap<>(fieldNode), parserContext));
@@ -130,7 +131,7 @@ public void testParseTextFieldCheckAnalyzerWithSearchAnalyzerAnalysisMode() {
130131
analyzers.put("my_analyzer",
131132
new NamedAnalyzer("my_named_analyzer", AnalyzerScope.INDEX, createAnalyzerWithMode("my_analyzer", mode)));
132133
IndexAnalyzers indexAnalyzers = new IndexAnalyzers(indexSettings, new NamedAnalyzer("default", AnalyzerScope.INDEX, null), null,
133-
null, analyzers, null, null);
134+
null, analyzers, Collections.emptyMap(), Collections.emptyMap());
134135
when(parserContext.getIndexAnalyzers()).thenReturn(indexAnalyzers);
135136
MapperException ex = expectThrows(MapperException.class,
136137
() -> TypeParsers.parseTextField(builder, "name", new HashMap<>(fieldNode), parserContext));
@@ -146,7 +147,7 @@ public void testParseTextFieldCheckAnalyzerWithSearchAnalyzerAnalysisMode() {
146147
analyzers.put("standard", new NamedAnalyzer("standard", AnalyzerScope.INDEX, new StandardAnalyzer()));
147148

148149
indexAnalyzers = new IndexAnalyzers(indexSettings, new NamedAnalyzer("default", AnalyzerScope.INDEX, null), null, null, analyzers,
149-
null, null);
150+
Collections.emptyMap(), Collections.emptyMap());
150151
when(parserContext.getIndexAnalyzers()).thenReturn(indexAnalyzers);
151152
TypeParsers.parseTextField(builder, "name", new HashMap<>(fieldNode), parserContext);
152153
}

0 commit comments

Comments
 (0)