Skip to content

Commit 39ce483

Browse files
romseygeekKubik42
authored andcommitted
Use IndexSettings directly in KeywordFieldMapper.Builder (elastic#137748)
This allows us to consolidate some Builder constructors, and to remove several parameters that can always be pulled from the IndexSettings.
1 parent 156fc5d commit 39ce483

File tree

25 files changed

+151
-249
lines changed

25 files changed

+151
-249
lines changed

benchmarks/src/main/java/org/elasticsearch/benchmark/_nightly/esql/ValuesSourceReaderBenchmark.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.lucene.store.Directory;
2424
import org.apache.lucene.util.BytesRef;
2525
import org.apache.lucene.util.NumericUtils;
26+
import org.elasticsearch.cluster.metadata.IndexMetadata;
2627
import org.elasticsearch.common.breaker.NoopCircuitBreaker;
2728
import org.elasticsearch.common.logging.LogConfigurator;
2829
import org.elasticsearch.common.lucene.Lucene;
@@ -111,6 +112,15 @@ public class ValuesSourceReaderBenchmark {
111112
BigArrays.NON_RECYCLING_INSTANCE
112113
);
113114

115+
public static IndexSettings defaultIndexSettings() {
116+
IndexMetadata INDEX_METADATA = IndexMetadata.builder("index")
117+
.settings(Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, IndexVersion.current()))
118+
.numberOfShards(1)
119+
.numberOfReplicas(0)
120+
.build();
121+
return new IndexSettings(INDEX_METADATA, Settings.EMPTY);
122+
}
123+
114124
static {
115125
// Smoke test all the expected values and force loading subclasses more like prod
116126
selfTest();
@@ -223,7 +233,7 @@ private static BlockLoader blockLoader(String name) {
223233
Lucene.KEYWORD_ANALYZER,
224234
Lucene.KEYWORD_ANALYZER,
225235
Lucene.KEYWORD_ANALYZER,
226-
new KeywordFieldMapper.Builder(name, IndexVersion.current()).docValues(ft.docValuesType() != DocValuesType.NONE),
236+
new KeywordFieldMapper.Builder(name, defaultIndexSettings()).docValues(ft.docValuesType() != DocValuesType.NONE),
227237
syntheticSource
228238
).blockLoader(new MappedFieldType.BlockLoaderContext() {
229239
@Override

modules/aggregations/src/test/java/org/elasticsearch/aggregations/bucket/timeseries/TimeSeriesAggregatorTests.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.lucene.util.BytesRef;
2424
import org.elasticsearch.aggregations.bucket.AggregationTestCase;
2525
import org.elasticsearch.core.CheckedConsumer;
26-
import org.elasticsearch.index.IndexVersion;
2726
import org.elasticsearch.index.mapper.DataStreamTimestampFieldMapper;
2827
import org.elasticsearch.index.mapper.DateFieldMapper;
2928
import org.elasticsearch.index.mapper.KeywordFieldMapper;
@@ -79,10 +78,10 @@ public void testStandAloneTimeSeriesWithSum() throws IOException {
7978
assertThat(((Sum) ts.getBucketByKey("{dim1=bbb, dim2=zzz}").getAggregations().get("sum")).value(), equalTo(22.0));
8079

8180
},
82-
new KeywordFieldMapper.Builder("dim1", IndexVersion.current()).dimension(true)
81+
new KeywordFieldMapper.Builder("dim1", defaultIndexSettings()).dimension(true)
8382
.build(MapperBuilderContext.root(true, true))
8483
.fieldType(),
85-
new KeywordFieldMapper.Builder("dim2", IndexVersion.current()).dimension(true)
84+
new KeywordFieldMapper.Builder("dim2", defaultIndexSettings()).dimension(true)
8685
.build(MapperBuilderContext.root(true, true))
8786
.fieldType(),
8887
new NumberFieldMapper.NumberFieldType("val1", NumberFieldMapper.NumberType.INTEGER)
@@ -149,7 +148,7 @@ public void testWithDateHistogramExecutedAsFilterByFilterWithTimeSeriesIndexSear
149148
aggregationBuilder,
150149
TimeSeriesIdFieldMapper.FIELD_TYPE,
151150
new DateFieldMapper.DateFieldType("@timestamp"),
152-
new KeywordFieldMapper.Builder("dim1", IndexVersion.current()).dimension(true)
151+
new KeywordFieldMapper.Builder("dim1", defaultIndexSettings()).dimension(true)
153152
.build(MapperBuilderContext.root(true, true))
154153
.fieldType(),
155154
new NumberFieldMapper.NumberFieldType("val1", NumberFieldMapper.NumberType.INTEGER)
@@ -202,10 +201,10 @@ public void testMultiBucketAggregationAsSubAggregation() throws IOException {
202201
new MatchAllDocsQuery(),
203202
buildIndex,
204203
verifier,
205-
new KeywordFieldMapper.Builder("dim1", IndexVersion.current()).dimension(true)
204+
new KeywordFieldMapper.Builder("dim1", defaultIndexSettings()).dimension(true)
206205
.build(MapperBuilderContext.root(true, true))
207206
.fieldType(),
208-
new KeywordFieldMapper.Builder("dim2", IndexVersion.current()).dimension(true)
207+
new KeywordFieldMapper.Builder("dim2", defaultIndexSettings()).dimension(true)
209208
.build(MapperBuilderContext.root(true, true))
210209
.fieldType()
211210
);
@@ -237,10 +236,10 @@ public void testAggregationSize() throws IOException {
237236
new MatchAllDocsQuery(),
238237
buildIndex,
239238
limitedVerifier,
240-
new KeywordFieldMapper.Builder("dim1", IndexVersion.current()).dimension(true)
239+
new KeywordFieldMapper.Builder("dim1", defaultIndexSettings()).dimension(true)
241240
.build(MapperBuilderContext.root(true, true))
242241
.fieldType(),
243-
new KeywordFieldMapper.Builder("dim2", IndexVersion.current()).dimension(true)
242+
new KeywordFieldMapper.Builder("dim2", defaultIndexSettings()).dimension(true)
244243
.build(MapperBuilderContext.root(true, true))
245244
.fieldType()
246245
);

modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorFieldMapper.java

Lines changed: 17 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.elasticsearch.common.settings.Setting;
4040
import org.elasticsearch.common.settings.Settings;
4141
import org.elasticsearch.core.Tuple;
42+
import org.elasticsearch.index.IndexSettings;
4243
import org.elasticsearch.index.IndexVersion;
4344
import org.elasticsearch.index.IndexVersions;
4445
import org.elasticsearch.index.mapper.BinaryFieldMapper;
@@ -101,9 +102,7 @@ public class PercolatorFieldMapper extends FieldMapper {
101102

102103
@Override
103104
public FieldMapper.Builder getMergeBuilder() {
104-
return new Builder(leafName(), searchExecutionContext, mapUnmappedFieldsAsText, indexCreatedVersion, clusterTransportVersion).init(
105-
this
106-
);
105+
return new Builder(leafName(), searchExecutionContext, mapUnmappedFieldsAsText, indexSettings, clusterTransportVersion).init(this);
107106
}
108107

109108
static class Builder extends FieldMapper.Builder {
@@ -113,20 +112,20 @@ static class Builder extends FieldMapper.Builder {
113112
private final Supplier<SearchExecutionContext> searchExecutionContext;
114113
private final boolean mapUnmappedFieldsAsText;
115114

116-
private final IndexVersion indexCreatedVersion;
115+
private final IndexSettings indexSettings;
117116
private final Supplier<TransportVersion> clusterTransportVersion;
118117

119118
Builder(
120119
String fieldName,
121120
Supplier<SearchExecutionContext> searchExecutionContext,
122121
boolean mapUnmappedFieldsAsText,
123-
IndexVersion indexCreatedVersion,
122+
IndexSettings indexSettings,
124123
Supplier<TransportVersion> clusterTransportVersion
125124
) {
126125
super(fieldName);
127126
this.searchExecutionContext = searchExecutionContext;
128127
this.mapUnmappedFieldsAsText = mapUnmappedFieldsAsText;
129-
this.indexCreatedVersion = Objects.requireNonNull(indexCreatedVersion);
128+
this.indexSettings = Objects.requireNonNull(indexSettings);
130129
this.clusterTransportVersion = clusterTransportVersion;
131130
}
132131

@@ -139,25 +138,17 @@ protected Parameter<?>[] getParameters() {
139138
public PercolatorFieldMapper build(MapperBuilderContext context) {
140139
PercolatorFieldType fieldType = new PercolatorFieldType(context.buildFullName(leafName()), meta.getValue());
141140
context = context.createChildContext(leafName(), null);
142-
KeywordFieldMapper extractedTermsField = createExtractQueryFieldBuilder(
143-
EXTRACTED_TERMS_FIELD_NAME,
144-
context,
145-
indexCreatedVersion
146-
);
141+
KeywordFieldMapper extractedTermsField = createExtractQueryFieldBuilder(EXTRACTED_TERMS_FIELD_NAME, context, indexSettings);
147142
fieldType.queryTermsField = extractedTermsField.fieldType();
148-
KeywordFieldMapper extractionResultField = createExtractQueryFieldBuilder(
149-
EXTRACTION_RESULT_FIELD_NAME,
150-
context,
151-
indexCreatedVersion
152-
);
143+
KeywordFieldMapper extractionResultField = createExtractQueryFieldBuilder(EXTRACTION_RESULT_FIELD_NAME, context, indexSettings);
153144
fieldType.extractionResultField = extractionResultField.fieldType();
154145
BinaryFieldMapper queryBuilderField = createQueryBuilderFieldBuilder(context);
155146
fieldType.queryBuilderField = queryBuilderField.fieldType();
156147
// Range field is of type ip, because that matches closest with BinaryRange field. Otherwise we would
157148
// have to introduce a new field type...
158149
RangeFieldMapper rangeFieldMapper = createExtractedRangeFieldBuilder(RANGE_FIELD_NAME, RangeType.IP, context);
159150
fieldType.rangeField = rangeFieldMapper.fieldType();
160-
NumberFieldMapper minimumShouldMatchFieldMapper = createMinimumShouldMatchField(context, indexCreatedVersion);
151+
NumberFieldMapper minimumShouldMatchFieldMapper = createMinimumShouldMatchField(context, indexSettings);
161152
fieldType.minimumShouldMatchField = minimumShouldMatchFieldMapper.fieldType();
162153
fieldType.mapUnmappedFieldsAsText = mapUnmappedFieldsAsText;
163154

@@ -172,17 +163,13 @@ public PercolatorFieldMapper build(MapperBuilderContext context) {
172163
rangeFieldMapper,
173164
minimumShouldMatchFieldMapper,
174165
mapUnmappedFieldsAsText,
175-
indexCreatedVersion,
166+
indexSettings,
176167
clusterTransportVersion
177168
);
178169
}
179170

180-
static KeywordFieldMapper createExtractQueryFieldBuilder(
181-
String name,
182-
MapperBuilderContext context,
183-
IndexVersion indexCreatedVersion
184-
) {
185-
KeywordFieldMapper.Builder queryMetadataFieldBuilder = new KeywordFieldMapper.Builder(name, indexCreatedVersion);
171+
static KeywordFieldMapper createExtractQueryFieldBuilder(String name, MapperBuilderContext context, IndexSettings indexSettings) {
172+
KeywordFieldMapper.Builder queryMetadataFieldBuilder = new KeywordFieldMapper.Builder(name, indexSettings);
186173
queryMetadataFieldBuilder.docValues(false);
187174
return queryMetadataFieldBuilder.build(context);
188175
}
@@ -200,11 +187,11 @@ static RangeFieldMapper createExtractedRangeFieldBuilder(String name, RangeType
200187
return builder.build(context);
201188
}
202189

203-
static NumberFieldMapper createMinimumShouldMatchField(MapperBuilderContext context, IndexVersion indexCreatedVersion) {
190+
static NumberFieldMapper createMinimumShouldMatchField(MapperBuilderContext context, IndexSettings indexSettings) {
204191
NumberFieldMapper.Builder builder = NumberFieldMapper.Builder.docValuesOnly(
205192
MINIMUM_SHOULD_MATCH_FIELD_NAME,
206193
NumberFieldMapper.NumberType.INTEGER,
207-
indexCreatedVersion
194+
indexSettings.getIndexVersionCreated()
208195
);
209196
return builder.build(context);
210197
}
@@ -219,7 +206,7 @@ public Builder parse(String name, Map<String, Object> node, MappingParserContext
219206
name,
220207
parserContext.searchExecutionContext(),
221208
getMapUnmappedFieldAsText(parserContext.getSettings()),
222-
parserContext.indexVersionCreated(),
209+
parserContext.getIndexSettings(),
223210
parserContext.clusterTransportVersion()
224211
);
225212
}
@@ -367,7 +354,7 @@ static Tuple<List<BytesRef>, Map<String, List<byte[]>>> extractTermsAndRanges(In
367354
private final NumberFieldMapper minimumShouldMatchFieldMapper;
368355
private final RangeFieldMapper rangeFieldMapper;
369356
private final boolean mapUnmappedFieldsAsText;
370-
private final IndexVersion indexCreatedVersion;
357+
private final IndexSettings indexSettings;
371358
private final Supplier<TransportVersion> clusterTransportVersion;
372359

373360
PercolatorFieldMapper(
@@ -381,7 +368,7 @@ static Tuple<List<BytesRef>, Map<String, List<byte[]>>> extractTermsAndRanges(In
381368
RangeFieldMapper rangeFieldMapper,
382369
NumberFieldMapper minimumShouldMatchFieldMapper,
383370
boolean mapUnmappedFieldsAsText,
384-
IndexVersion indexCreatedVersion,
371+
IndexSettings indexSettings,
385372
Supplier<TransportVersion> clusterTransportVersion
386373
) {
387374
super(simpleName, mappedFieldType, builderParams);
@@ -392,7 +379,7 @@ static Tuple<List<BytesRef>, Map<String, List<byte[]>>> extractTermsAndRanges(In
392379
this.minimumShouldMatchFieldMapper = minimumShouldMatchFieldMapper;
393380
this.rangeFieldMapper = rangeFieldMapper;
394381
this.mapUnmappedFieldsAsText = mapUnmappedFieldsAsText;
395-
this.indexCreatedVersion = indexCreatedVersion;
382+
this.indexSettings = indexSettings;
396383
this.clusterTransportVersion = clusterTransportVersion;
397384
}
398385

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

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -327,11 +327,7 @@ boolean createDynamicField(Mapper.Builder builder, DocumentParserContext context
327327
public boolean newDynamicStringField(DocumentParserContext context, String name) throws IOException {
328328
MapperBuilderContext mapperBuilderContext = context.createDynamicMapperBuilderContext();
329329
if (mapperBuilderContext.parentObjectContainsDimensions()) {
330-
return createDynamicField(
331-
new KeywordFieldMapper.Builder(name, context.indexSettings().getIndexVersionCreated()),
332-
context,
333-
mapperBuilderContext
334-
);
330+
return createDynamicField(new KeywordFieldMapper.Builder(name, context.indexSettings()), context, mapperBuilderContext);
335331
} else {
336332
var indexSettings = context.indexSettings();
337333
return createDynamicField(
@@ -342,9 +338,7 @@ public boolean newDynamicStringField(DocumentParserContext context, String name)
342338
context.indexAnalyzers(),
343339
SourceFieldMapper.isSynthetic(indexSettings),
344340
false
345-
).addMultiField(
346-
new KeywordFieldMapper.Builder("keyword", context.indexSettings().getIndexVersionCreated(), true).ignoreAbove(256)
347-
),
341+
).addMultiField(new KeywordFieldMapper.Builder("keyword", context.indexSettings(), true).ignoreAbove(256)),
348342
context
349343
);
350344
}

0 commit comments

Comments
 (0)