@@ -47,23 +47,34 @@ public class TimeSeriesIdFieldMapper extends MetadataFieldMapper {
4747 public static final String CONTENT_TYPE = "_tsid" ;
4848 public static final TimeSeriesIdFieldType FIELD_TYPE = new TimeSeriesIdFieldType ();
4949
50+ private static final TimeSeriesIdFieldMapper INSTANCE_WITHOUT_SKIPPER = new TimeSeriesIdFieldMapper (false );
51+ private static final TimeSeriesIdFieldMapper INSTANCE_WITH_SKIPPER = new TimeSeriesIdFieldMapper (true );
52+
53+ public static TimeSeriesIdFieldMapper getInstance (boolean useDocValuesSkipper ) {
54+ if (useDocValuesSkipper ) {
55+ return INSTANCE_WITH_SKIPPER ;
56+ } else {
57+ return INSTANCE_WITHOUT_SKIPPER ;
58+ }
59+ }
60+
61+ public static TimeSeriesIdFieldMapper getInstance (MappingParserContext context ) {
62+ boolean useDocValuesSkipper = context .indexVersionCreated ().onOrAfter (IndexVersions .TIME_SERIES_ID_DOC_VALUES_SPARSE_INDEX )
63+ && context .getIndexSettings ().useDocValuesSkipper ();
64+ return TimeSeriesIdFieldMapper .getInstance (useDocValuesSkipper );
65+ }
66+
5067 @ Override
5168 public FieldMapper .Builder getMergeBuilder () {
52- return new Builder (this .indexCreatedVersion , this . useDocValuesSkipper ).init (this );
69+ return new Builder (this .useDocValuesSkipper ).init (this );
5370 }
5471
5572 public static class Builder extends MetadataFieldMapper .Builder {
5673
57- private final IndexVersion indexCreatedVersion ;
5874 private final boolean useDocValuesSkipper ;
5975
60- public Builder (MappingParserContext context ) {
61- this (context .indexVersionCreated (), context .getIndexSettings ().useDocValuesSkipper ());
62- }
63-
64- protected Builder (IndexVersion indexCreatedVersion , boolean useDocValuesSkipper ) {
76+ protected Builder (boolean useDocValuesSkipper ) {
6577 super (NAME );
66- this .indexCreatedVersion = indexCreatedVersion ;
6778 this .useDocValuesSkipper = useDocValuesSkipper ;
6879 }
6980
@@ -74,7 +85,7 @@ protected Parameter<?>[] getParameters() {
7485
7586 @ Override
7687 public TimeSeriesIdFieldMapper build () {
77- return new TimeSeriesIdFieldMapper ( indexCreatedVersion , useDocValuesSkipper );
88+ return TimeSeriesIdFieldMapper . getInstance ( useDocValuesSkipper );
7889 }
7990 }
8091
@@ -123,12 +134,10 @@ public Query termQuery(Object value, SearchExecutionContext context) {
123134 }
124135 }
125136
126- private final IndexVersion indexCreatedVersion ;
127137 private final boolean useDocValuesSkipper ;
128138
129- private TimeSeriesIdFieldMapper (IndexVersion indexCreatedVersion , boolean useDocValuesSkipper ) {
139+ private TimeSeriesIdFieldMapper (boolean useDocValuesSkipper ) {
130140 super (FIELD_TYPE );
131- this .indexCreatedVersion = indexCreatedVersion ;
132141 this .useDocValuesSkipper = useDocValuesSkipper ;
133142 }
134143
@@ -149,7 +158,7 @@ public void postParse(DocumentParserContext context) throws IOException {
149158 timeSeriesId = routingPathFields .buildHash ().toBytesRef ();
150159 }
151160
152- if (this .useDocValuesSkipper && this . indexCreatedVersion . onOrAfter ( IndexVersions . TIME_SERIES_ID_DOC_VALUES_SPARSE_INDEX ) ) {
161+ if (this .useDocValuesSkipper ) {
153162 context .doc ().add (SortedDocValuesField .indexedField (fieldType ().name (), timeSeriesId ));
154163 } else {
155164 context .doc ().add (new SortedDocValuesField (fieldType ().name (), timeSeriesId ));
0 commit comments