@@ -114,17 +114,17 @@ public static class Builder extends MetadataFieldMapper.Builder {
114114 );
115115
116116 private final IndexMode indexMode ;
117+ private final boolean setDefaultSytheticMode ;
117118
118- public Builder (IndexMode indexMode , IndexVersion indexVersion ) {
119+ public Builder (IndexMode indexMode , boolean setDefaultSytheticMode ) {
119120 super (Defaults .NAME );
120121 this .indexMode = indexMode ;
122+ this .setDefaultSytheticMode = setDefaultSytheticMode ;
121123 this .mode = new Parameter <>(
122124 "mode" ,
123125 true ,
124126 // The default mode for TimeSeries is left empty on purpose, so that mapping printings include the synthetic source mode.
125- () -> getIndexMode () == IndexMode .TIME_SERIES && indexVersion .between (IndexVersion .V_8_7_0 , IndexVersion .V_8_10_0 )
126- ? Mode .SYNTHETIC
127- : null ,
127+ () -> getIndexMode () == IndexMode .TIME_SERIES && setDefaultSytheticMode ? Mode .SYNTHETIC : null ,
128128 (n , c , o ) -> Mode .valueOf (o .toString ().toUpperCase (Locale .ROOT )),
129129 m -> toType (m ).enabled .explicit () ? null : toType (m ).mode ,
130130 (b , n , v ) -> b .field (n , v .toString ().toLowerCase (Locale .ROOT )),
@@ -171,7 +171,8 @@ public SourceFieldMapper build() {
171171 enabled .get (),
172172 includes .getValue ().toArray (String []::new ),
173173 excludes .getValue ().toArray (String []::new ),
174- indexMode
174+ indexMode ,
175+ setDefaultSytheticMode
175176 );
176177 if (indexMode != null ) {
177178 indexMode .validateSourceFieldMapper (sourceFieldMapper );
@@ -188,7 +189,10 @@ private IndexMode getIndexMode() {
188189 c -> c .getIndexSettings ().getMode () == IndexMode .TIME_SERIES
189190 ? c .getIndexSettings ().getIndexVersionCreated ().onOrAfter (IndexVersion .V_8_7_0 ) ? TSDB_DEFAULT : TSDB_LEGACY_DEFAULT
190191 : DEFAULT ,
191- c -> new Builder (c .getIndexSettings ().getMode (), c .getIndexSettings ().getIndexVersionCreated ())
192+ c -> new Builder (
193+ c .getIndexSettings ().getMode (),
194+ c .getIndexSettings ().getIndexVersionCreated ().between (IndexVersion .V_8_7_0 , IndexVersion .V_8_10_0 )
195+ )
192196 );
193197
194198 static final class SourceFieldType extends MappedFieldType {
@@ -230,8 +234,25 @@ public Query termQuery(Object value, SearchExecutionContext context) {
230234 private final SourceFilter sourceFilter ;
231235
232236 private final IndexMode indexMode ;
237+ private final boolean setDefaultSytheticMode ;
238+
239+ private SourceFieldMapper (
240+ Mode mode ,
241+ Explicit <Boolean > enabled ,
242+ String [] includes ,
243+ String [] excludes ,
244+ IndexMode indexMode ) {
245+ this (mode , enabled , includes , excludes , indexMode , false );
246+ }
233247
234- private SourceFieldMapper (Mode mode , Explicit <Boolean > enabled , String [] includes , String [] excludes , IndexMode indexMode ) {
248+ private SourceFieldMapper (
249+ Mode mode ,
250+ Explicit <Boolean > enabled ,
251+ String [] includes ,
252+ String [] excludes ,
253+ IndexMode indexMode ,
254+ boolean setDefaultSytheticMode
255+ ) {
235256 super (new SourceFieldType ((enabled .explicit () && enabled .value ()) || (enabled .explicit () == false && mode != Mode .DISABLED )));
236257 assert enabled .explicit () == false || mode == null ;
237258 this .mode = mode ;
@@ -244,6 +265,7 @@ private SourceFieldMapper(Mode mode, Explicit<Boolean> enabled, String[] include
244265 }
245266 this .complete = stored () && sourceFilter == null ;
246267 this .indexMode = indexMode ;
268+ this .setDefaultSytheticMode = setDefaultSytheticMode ;
247269 }
248270
249271 private static SourceFilter buildSourceFilter (String [] includes , String [] excludes ) {
@@ -313,7 +335,7 @@ protected String contentType() {
313335
314336 @ Override
315337 public FieldMapper .Builder getMergeBuilder () {
316- return new Builder (indexMode , IndexVersion . current () ).init (this );
338+ return new Builder (indexMode , setDefaultSytheticMode ).init (this );
317339 }
318340
319341 /**
0 commit comments