Skip to content

Commit af7b631

Browse files
romseygeekncordon
authored andcommitted
ScaledFloatFieldMapper.Builder takes IndexSettings (elastic#138585)
Simple refactoring which will make it easier to add skippers to scaled_float fields in a follow-up.
1 parent 3228189 commit af7b631

File tree

2 files changed

+21
-65
lines changed

2 files changed

+21
-65
lines changed

modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/ScaledFloatFieldMapper.java

Lines changed: 19 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,9 @@
1515
import org.apache.lucene.search.Query;
1616
import org.elasticsearch.common.Explicit;
1717
import org.elasticsearch.common.settings.Setting;
18-
import org.elasticsearch.common.settings.Settings;
1918
import org.elasticsearch.common.xcontent.support.XContentMapValues;
2019
import org.elasticsearch.index.IndexMode;
2120
import org.elasticsearch.index.IndexSettings;
22-
import org.elasticsearch.index.IndexVersion;
2321
import org.elasticsearch.index.IndexVersions;
2422
import org.elasticsearch.index.fielddata.FieldData;
2523
import org.elasticsearch.index.fielddata.FieldDataContext;
@@ -133,46 +131,24 @@ public static class Builder extends FieldMapper.Builder {
133131
*/
134132
private final Parameter<TimeSeriesParams.MetricType> metric;
135133

136-
private final IndexMode indexMode;
137-
private final IndexVersion indexCreatedVersion;
138-
private final SourceKeepMode indexSourceKeepMode;
139-
140-
public Builder(
141-
String name,
142-
Settings settings,
143-
IndexMode indexMode,
144-
IndexVersion indexCreatedVersion,
145-
SourceKeepMode indexSourceKeepMode
146-
) {
147-
this(
148-
name,
149-
IGNORE_MALFORMED_SETTING.get(settings),
150-
COERCE_SETTING.get(settings),
151-
indexMode,
152-
indexCreatedVersion,
153-
indexSourceKeepMode
154-
);
155-
}
134+
private final IndexSettings indexSettings;
156135

157-
public Builder(
158-
String name,
159-
boolean ignoreMalformedByDefault,
160-
boolean coerceByDefault,
161-
IndexMode indexMode,
162-
IndexVersion indexCreatedVersion,
163-
SourceKeepMode indexSourceKeepMode
164-
) {
136+
public Builder(String name, IndexSettings indexSettings) {
165137
super(name);
166138
this.ignoreMalformed = Parameter.explicitBoolParam(
167139
"ignore_malformed",
168140
true,
169141
m -> toType(m).ignoreMalformed,
170-
ignoreMalformedByDefault
142+
IGNORE_MALFORMED_SETTING.get(indexSettings.getSettings())
143+
);
144+
this.coerce = Parameter.explicitBoolParam(
145+
"coerce",
146+
true,
147+
m -> toType(m).coerce,
148+
COERCE_SETTING.get(indexSettings.getSettings())
171149
);
172-
this.coerce = Parameter.explicitBoolParam("coerce", true, m -> toType(m).coerce, coerceByDefault);
173-
this.indexMode = indexMode;
174150
this.indexed = Parameter.indexParam(m -> toType(m).indexed, () -> {
175-
if (indexMode == IndexMode.TIME_SERIES) {
151+
if (indexSettings.getMode() == IndexMode.TIME_SERIES) {
176152
var metricType = getMetric().getValue();
177153
return metricType != TimeSeriesParams.MetricType.COUNTER && metricType != TimeSeriesParams.MetricType.GAUGE;
178154
} else {
@@ -190,8 +166,7 @@ public Builder(
190166
);
191167
}
192168
});
193-
this.indexCreatedVersion = indexCreatedVersion;
194-
this.indexSourceKeepMode = indexSourceKeepMode;
169+
this.indexSettings = indexSettings;
195170
}
196171

197172
Builder scalingFactor(double scalingFactor) {
@@ -229,17 +204,17 @@ public ScaledFloatFieldMapper build(MapperBuilderContext context) {
229204
scalingFactor.getValue(),
230205
nullValue.getValue(),
231206
metric.getValue(),
232-
indexMode,
207+
indexSettings.getMode(),
233208
coerce.getValue().value(),
234209
context.isSourceSynthetic()
235210
);
236211
String offsetsFieldName = getOffsetsFieldName(
237212
context,
238-
indexSourceKeepMode,
213+
indexSettings.sourceKeepMode(),
239214
hasDocValues.getValue(),
240215
stored.getValue(),
241216
this,
242-
indexCreatedVersion,
217+
indexSettings.getIndexVersionCreated(),
243218
IndexVersions.SYNTHETIC_SOURCE_STORE_ARRAYS_NATIVELY_SCALED_FLOAT
244219
);
245220
return new ScaledFloatFieldMapper(
@@ -253,15 +228,7 @@ public ScaledFloatFieldMapper build(MapperBuilderContext context) {
253228
}
254229
}
255230

256-
public static final TypeParser PARSER = new TypeParser(
257-
(n, c) -> new Builder(
258-
n,
259-
c.getSettings(),
260-
c.getIndexSettings().getMode(),
261-
c.indexVersionCreated(),
262-
c.getIndexSettings().sourceKeepMode()
263-
)
264-
);
231+
public static final TypeParser PARSER = new TypeParser((n, c) -> new Builder(n, c.getIndexSettings()));
265232

266233
public static final class ScaledFloatFieldType extends SimpleMappedFieldType {
267234

@@ -595,15 +562,10 @@ public String toString() {
595562
private final Double nullValue;
596563
private final double scalingFactor;
597564
private final boolean isSourceSynthetic;
598-
599-
private final boolean ignoreMalformedByDefault;
600-
private final boolean coerceByDefault;
601565
private final TimeSeriesParams.MetricType metricType;
602-
private final IndexMode indexMode;
603-
604-
private final IndexVersion indexCreatedVersion;
605566
private final String offsetsFieldName;
606-
private final SourceKeepMode indexSourceKeepMode;
567+
568+
private final IndexSettings indexSettings;
607569

608570
private ScaledFloatFieldMapper(
609571
String simpleName,
@@ -622,13 +584,9 @@ private ScaledFloatFieldMapper(
622584
this.nullValue = builder.nullValue.getValue();
623585
this.ignoreMalformed = builder.ignoreMalformed.getValue();
624586
this.coerce = builder.coerce.getValue();
625-
this.ignoreMalformedByDefault = builder.ignoreMalformed.getDefaultValue().value();
626-
this.coerceByDefault = builder.coerce.getDefaultValue().value();
587+
this.indexSettings = builder.indexSettings;
627588
this.metricType = builder.metric.getValue();
628-
this.indexMode = builder.indexMode;
629-
this.indexCreatedVersion = builder.indexCreatedVersion;
630589
this.offsetsFieldName = offsetsFieldName;
631-
this.indexSourceKeepMode = builder.indexSourceKeepMode;
632590
}
633591

634592
boolean coerce() {
@@ -657,9 +615,7 @@ protected String contentType() {
657615

658616
@Override
659617
public FieldMapper.Builder getMergeBuilder() {
660-
return new Builder(leafName(), ignoreMalformedByDefault, coerceByDefault, indexMode, indexCreatedVersion, indexSourceKeepMode)
661-
.metric(metricType)
662-
.init(this);
618+
return new Builder(leafName(), indexSettings).metric(metricType).init(this);
663619
}
664620

665621
@Override

modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/extras/ScaledFloatFieldTypeTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,14 +222,14 @@ public void testFieldData() throws IOException {
222222
}
223223

224224
public void testFetchSourceValue() throws IOException {
225-
MappedFieldType mapper = new ScaledFloatFieldMapper.Builder("field", false, false, null, null, null).scalingFactor(100)
225+
MappedFieldType mapper = new ScaledFloatFieldMapper.Builder("field", defaultIndexSettings()).scalingFactor(100)
226226
.build(MapperBuilderContext.root(false, false))
227227
.fieldType();
228228
assertEquals(List.of(3.14), fetchSourceValue(mapper, 3.1415926));
229229
assertEquals(List.of(3.14), fetchSourceValue(mapper, "3.1415"));
230230
assertEquals(List.of(), fetchSourceValue(mapper, ""));
231231

232-
MappedFieldType nullValueMapper = new ScaledFloatFieldMapper.Builder("field", false, false, null, null, null).scalingFactor(100)
232+
MappedFieldType nullValueMapper = new ScaledFloatFieldMapper.Builder("field", defaultIndexSettings()).scalingFactor(100)
233233
.nullValue(2.71)
234234
.build(MapperBuilderContext.root(false, false))
235235
.fieldType();

0 commit comments

Comments
 (0)