@@ -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
0 commit comments