Skip to content

Commit ee7feb8

Browse files
committed
Move bwc check to constructor
1 parent 176ee56 commit ee7feb8

File tree

3 files changed

+39
-22
lines changed

3 files changed

+39
-22
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,9 +341,10 @@ public boolean newDynamicStringField(DocumentParserContext context, String name)
341341
indexSettings.getIndexVersionCreated(),
342342
indexSettings.getMode(),
343343
context.indexAnalyzers(),
344+
mapperBuilderContext.isSourceSynthetic(),
344345
false
345346
).addMultiField(
346-
new KeywordFieldMapper.Builder("keyword", context.indexSettings().getIndexVersionCreated()).ignoreAbove(256)
347+
new KeywordFieldMapper.Builder("keyword", context.indexSettings().getIndexVersionCreated(), true).ignoreAbove(256)
347348
),
348349
context
349350
);

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

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ public static class Builder extends FieldMapper.Builder {
245245
private final IndexMode indexMode;
246246

247247
private final Parameter<Boolean> index = Parameter.indexParam(m -> ((TextFieldMapper) m).index, true);
248-
private final Parameter<Boolean> store = Parameter.storeParam(m -> ((TextFieldMapper) m).store, false);
248+
private Parameter<Boolean> store;
249249

250250
final Parameter<SimilarityProvider> similarity = TextParams.similarity(m -> ((TextFieldMapper) m).similarity);
251251

@@ -293,14 +293,15 @@ public static class Builder extends FieldMapper.Builder {
293293
private final boolean isWithinMultiField;
294294

295295
public Builder(String name, IndexAnalyzers indexAnalyzers) {
296-
this(name, IndexVersion.current(), null, indexAnalyzers, false);
296+
this(name, IndexVersion.current(), null, indexAnalyzers, false, false);
297297
}
298298

299299
public Builder(
300300
String name,
301301
IndexVersion indexCreatedVersion,
302302
IndexMode indexMode,
303303
IndexAnalyzers indexAnalyzers,
304+
boolean isSyntheticSourceEnabled,
304305
boolean isWithinMultiField
305306
) {
306307
super(name);
@@ -320,6 +321,21 @@ public Builder(
320321
m -> ((TextFieldMapper) m).norms,
321322
() -> indexMode != IndexMode.LOGSDB && indexMode != IndexMode.TIME_SERIES
322323
);
324+
325+
// // backwards compatibility checks
326+
this.store = Parameter.storeParam(m -> ((TextFieldMapper) m).store, () -> {
327+
if (keywordMultiFieldsNotStoredWhenIgnored_indexVersionCheck(indexCreatedVersion)) {
328+
return false;
329+
}
330+
331+
if (multiFieldsNotStoredByDefault_indexVersionCheck(indexCreatedVersion)) {
332+
return isSyntheticSourceEnabled
333+
&& isWithinMultiField == false
334+
&& multiFieldsBuilder.hasSyntheticSourceCompatibleKeywordField() == false;
335+
} else {
336+
return isSyntheticSourceEnabled && multiFieldsBuilder.hasSyntheticSourceCompatibleKeywordField() == false;
337+
}
338+
});
323339
}
324340

325341
public Builder index(boolean index) {
@@ -471,19 +487,6 @@ private SubFieldInfo buildPhraseInfo(FieldType fieldType, TextFieldType parent)
471487
public TextFieldMapper build(MapperBuilderContext context) {
472488
this.isSyntheticSourceEnabled = context.isSourceSynthetic();
473489

474-
// // backwards compatibility checks
475-
// if (this.store.isSet() == false && keywordMultiFieldsNotStoredWhenIgnored_indexVersionCheck(indexCreatedVersion) == false) {
476-
// this.store = Parameter.storeParam(m -> ((TextFieldMapper) m).store, () -> {
477-
// if (multiFieldsNotStoredByDefault_indexVersionCheck(indexCreatedVersion)) {
478-
// return isSyntheticSourceEnabled
479-
// && isWithinMultiField == false
480-
// && multiFieldsBuilder.hasSyntheticSourceCompatibleKeywordField() == false;
481-
// } else {
482-
// return isSyntheticSourceEnabled && multiFieldsBuilder.hasSyntheticSourceCompatibleKeywordField() == false;
483-
// }
484-
// });
485-
// }
486-
487490
FieldType fieldType = TextParams.buildFieldType(
488491
index,
489492
store,
@@ -506,7 +509,14 @@ public TextFieldMapper build(MapperBuilderContext context) {
506509
}
507510

508511
public static final TypeParser PARSER = createTypeParserWithLegacySupport(
509-
(n, c) -> new Builder(n, c.indexVersionCreated(), c.getIndexSettings().getMode(), c.getIndexAnalyzers(), c.isWithinMultiField())
512+
(n, c) -> new Builder(
513+
n,
514+
c.indexVersionCreated(),
515+
c.getIndexSettings().getMode(),
516+
c.getIndexAnalyzers(),
517+
SourceFieldMapper.isSynthetic(c.getIndexSettings()),
518+
c.isWithinMultiField()
519+
)
510520
);
511521

512522
private static class PhraseWrappedAnalyzer extends AnalyzerWrapper {
@@ -1381,7 +1391,9 @@ public Map<String, NamedAnalyzer> indexAnalyzers() {
13811391

13821392
@Override
13831393
public FieldMapper.Builder getMergeBuilder() {
1384-
return new Builder(leafName(), indexCreatedVersion, indexMode, indexAnalyzers, isWithinMultiField).init(this);
1394+
return new Builder(leafName(), indexCreatedVersion, indexMode, indexAnalyzers, isSyntheticSourceEnabled, isWithinMultiField).init(
1395+
this
1396+
);
13851397
}
13861398

13871399
@Override

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -739,10 +739,14 @@ public void testNestedObjectWithMultiFieldsgetTotalFieldsCount() {
739739
new KeywordFieldMapper.Builder("multi_field_size_4", IndexVersion.current(), true)
740740
)
741741
.addMultiField(
742-
new TextFieldMapper.Builder("grand_child_size_5", IndexVersion.current(), null, createDefaultIndexAnalyzers(), true)
743-
.addMultiField(
744-
new KeywordFieldMapper.Builder("multi_field_of_multi_field_size_6", IndexVersion.current(), true)
745-
)
742+
new TextFieldMapper.Builder(
743+
"grand_child_size_5",
744+
IndexVersion.current(),
745+
null,
746+
createDefaultIndexAnalyzers(),
747+
false,
748+
true
749+
).addMultiField(new KeywordFieldMapper.Builder("multi_field_of_multi_field_size_6", IndexVersion.current(), true))
746750
)
747751
)
748752
);

0 commit comments

Comments
 (0)