4747import org .elasticsearch .index .mapper .BlockStoredFieldsReader ;
4848import org .elasticsearch .index .mapper .DocumentParserContext ;
4949import org .elasticsearch .index .mapper .FieldMapper ;
50- import org .elasticsearch .index .mapper .KeywordFieldMapper ;
5150import org .elasticsearch .index .mapper .MapperBuilderContext ;
5251import org .elasticsearch .index .mapper .SourceValueFetcher ;
5352import org .elasticsearch .index .mapper .StringFieldType ;
@@ -124,7 +123,7 @@ protected Parameter<?>[] getParameters() {
124123 return new Parameter <?>[] { meta };
125124 }
126125
127- private MatchOnlyTextFieldType buildFieldType (MapperBuilderContext context , boolean storeSource ) {
126+ private MatchOnlyTextFieldType buildFieldType (MapperBuilderContext context ) {
128127 NamedAnalyzer searchAnalyzer = analyzers .getSearchAnalyzer ();
129128 NamedAnalyzer searchQuoteAnalyzer = analyzers .getSearchQuoteAnalyzer ();
130129 NamedAnalyzer indexAnalyzer = analyzers .getIndexAnalyzer ();
@@ -151,7 +150,7 @@ public MatchOnlyTextFieldMapper build(MapperBuilderContext context) {
151150 } else {
152151 storeSource = context .isSourceSynthetic ();
153152 }
154- MatchOnlyTextFieldType tft = buildFieldType (context , storeSource );
153+ MatchOnlyTextFieldType tft = buildFieldType (context );
155154 return new MatchOnlyTextFieldMapper (leafName (), Defaults .FIELD_TYPE , tft , builderParams (this , context ), storeSource , this );
156155 }
157156 }
@@ -535,15 +534,12 @@ protected void write(XContentBuilder b, Object value) throws IOException {
535534 }
536535 );
537536 } else {
538- for (FieldMapper multiField : multiFields ()) {
539- if (multiField instanceof KeywordFieldMapper kwd ) {
540- if (kwd .hasNormalizer () == false && (kwd .fieldType ().hasDocValues () || kwd .fieldType ().isStored ())) {
541- return new SyntheticSourceSupport .Native (() -> kwd .syntheticFieldLoader (fullPath (), leafName ()));
542- }
543- }
537+ var kwd = TextFieldMapper .SyntheticSourceHelper .getKeywordFieldMapperForSyntheticSource (this );
538+ if (kwd != null ) {
539+ return new SyntheticSourceSupport .Native (() -> kwd .syntheticFieldLoader (fullPath (), leafName ()));
544540 }
545541 assert false : "there should be a suite field mapper with native synthetic source support" ;
546- return null ;
542+ return super . syntheticSourceSupport () ;
547543 }
548544 }
549545}
0 commit comments