@@ -140,7 +140,7 @@ public static class Builder extends FieldMapper.Builder {
140140 }
141141 });
142142
143- private final Parameter <Boolean > indexed = Parameter . indexParam ( m -> builder ( m ). indexed . get (), true ) ;
143+ private final Parameter <Boolean > indexed ;
144144 private final Parameter <Boolean > hasDocValues = Parameter .docValuesParam (m -> builder (m ).hasDocValues .get (), true );
145145
146146 private final Parameter <String > nullValue = Parameter .stringParam ("null_value" , false , m -> builder (m ).nullValue .get (), null )
@@ -154,6 +154,7 @@ public static class Builder extends FieldMapper.Builder {
154154 );
155155 private final int ignoreAboveDefault ;
156156 private final Parameter <Integer > ignoreAbove ;
157+ private final boolean indexDisabledByDefault ;
157158
158159 private final Parameter <String > indexOptions = TextParams .keywordIndexOptions (m -> builder (m ).indexOptions .get ());
159160 private final Parameter <SimilarityProvider > similarity = TextParams .similarity (m -> builder (m ).similarity .get ());
@@ -164,32 +165,33 @@ public static class Builder extends FieldMapper.Builder {
164165 m -> builder (m ).splitQueriesOnWhitespace .get (),
165166 false
166167 );
167- private final Parameter <List <String >> dimensions = dimensionsParam (m -> builder (m ).dimensions .get ()).addValidator (v -> {
168- if (v .isEmpty () == false && (indexed .getValue () == false || hasDocValues .getValue () == false )) {
169- throw new IllegalArgumentException (
170- "Field ["
171- + TIME_SERIES_DIMENSIONS_ARRAY_PARAM
172- + "] requires that ["
173- + indexed .name
174- + "] and ["
175- + hasDocValues .name
176- + "] are true"
177- );
178- }
179- });
180-
168+ private final Parameter <List <String >> dimensions ;
181169 private final Parameter <Map <String , String >> meta = Parameter .metaParam ();
182170
183171 public static FieldMapper .Parameter <List <String >> dimensionsParam (Function <FieldMapper , List <String >> initializer ) {
184172 return FieldMapper .Parameter .stringArrayParam (TIME_SERIES_DIMENSIONS_ARRAY_PARAM , false , initializer );
185173 }
186174
187175 public Builder (final String name ) {
188- this (name , Integer .MAX_VALUE );
176+ this (name , Integer .MAX_VALUE , false );
189177 }
190178
191- private Builder (String name , int ignoreAboveDefault ) {
179+ private Builder (String name , int ignoreAboveDefault , boolean indexDisabledByDefault ) {
192180 super (name );
181+ this .indexed = Parameter .indexParam (m -> builder (m ).indexed .get (), indexDisabledByDefault == false );
182+ this .dimensions = dimensionsParam (m -> builder (m ).dimensions .get ()).addValidator (v -> {
183+ if (v .isEmpty () == false && (indexed .getValue () == false || hasDocValues .getValue () == false )) {
184+ throw new IllegalArgumentException (
185+ "Field ["
186+ + TIME_SERIES_DIMENSIONS_ARRAY_PARAM
187+ + "] requires that ["
188+ + indexed .name
189+ + "] and ["
190+ + hasDocValues .name
191+ + "] are true"
192+ );
193+ }
194+ });
193195 this .ignoreAboveDefault = ignoreAboveDefault ;
194196 this .ignoreAbove = Parameter .intParam ("ignore_above" , true , m -> builder (m ).ignoreAbove .get (), ignoreAboveDefault )
195197 .addValidator (v -> {
@@ -198,6 +200,7 @@ private Builder(String name, int ignoreAboveDefault) {
198200 }
199201 });
200202 this .dimensions .precludesParameters (ignoreAbove );
203+ this .indexDisabledByDefault = indexDisabledByDefault ;
201204 }
202205
203206 @ Override
@@ -239,7 +242,9 @@ public FlattenedFieldMapper build(MapperBuilderContext context) {
239242 }
240243 }
241244
242- public static final TypeParser PARSER = new TypeParser ((n , c ) -> new Builder (n , IGNORE_ABOVE_SETTING .get (c .getSettings ())));
245+ public static final TypeParser PARSER = new TypeParser (
246+ (n , c ) -> new Builder (n , IGNORE_ABOVE_SETTING .get (c .getSettings ()), c .getIndexSettings ().isIndexDisabledByDefault ())
247+ );
243248
244249 /**
245250 * A field type that represents the values under a particular JSON key, used
@@ -827,6 +832,7 @@ public void validateMatchedRoutingPath(final String routingPath) {
827832
828833 private final FlattenedFieldParser fieldParser ;
829834 private final Builder builder ;
835+ private final boolean indexDisabledByDefault ;
830836
831837 private FlattenedFieldMapper (
832838 String leafName ,
@@ -848,6 +854,7 @@ private FlattenedFieldMapper(
848854 builder .ignoreAbove .get (),
849855 builder .nullValue .get ()
850856 );
857+ this .indexDisabledByDefault = builder .indexDisabledByDefault ;
851858 }
852859
853860 @ Override
@@ -905,7 +912,7 @@ protected void parseCreateField(DocumentParserContext context) throws IOExceptio
905912
906913 @ Override
907914 public FieldMapper .Builder getMergeBuilder () {
908- return new Builder (leafName (), ignoreAboveDefault ).init (this );
915+ return new Builder (leafName (), ignoreAboveDefault , indexDisabledByDefault ).init (this );
909916 }
910917
911918 @ Override
0 commit comments