Skip to content

Commit b4f900a

Browse files
authored
Handle index.mapping.ignore_malformed in downsampling (elastic#119134) (elastic#119236)
1 parent 861c6b2 commit b4f900a

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

docs/changelog/119134.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 119134
2+
summary: Handle `index.mapping.ignore_malformed` in downsampling
3+
area: Downsampling
4+
type: bug
5+
issues:
6+
- 119075

x-pack/plugin/downsample/src/main/java/org/elasticsearch/xpack/downsample/TransportDownsampleAction.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
import org.elasticsearch.index.IndexNotFoundException;
5959
import org.elasticsearch.index.IndexSettings;
6060
import org.elasticsearch.index.mapper.DateFieldMapper;
61+
import org.elasticsearch.index.mapper.FieldMapper;
6162
import org.elasticsearch.index.mapper.MappedFieldType;
6263
import org.elasticsearch.index.mapper.MapperService;
6364
import org.elasticsearch.index.mapper.TimeSeriesParams;
@@ -723,6 +724,9 @@ private static void addTimestampField(
723724
if (mapping.get("format") != null) {
724725
builder.field("format", mapping.get("format"));
725726
}
727+
if (mapping.get("ignore_malformed") != null) {
728+
builder.field("ignore_malformed", mapping.get("ignore_malformed"));
729+
}
726730
}
727731
} catch (IOException e) {
728732
throw new ElasticsearchException("Unable to create timestamp field mapping for field [" + timestampField + "]", e);
@@ -897,6 +901,12 @@ private void createDownsampleIndex(
897901
sourceIndexMetadata.getSettings().get(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey())
898902
);
899903
}
904+
if (sourceIndexMetadata.getSettings().hasValue(FieldMapper.IGNORE_MALFORMED_SETTING.getKey())) {
905+
builder.put(
906+
FieldMapper.IGNORE_MALFORMED_SETTING.getKey(),
907+
sourceIndexMetadata.getSettings().get(FieldMapper.IGNORE_MALFORMED_SETTING.getKey())
908+
);
909+
}
900910

901911
CreateIndexClusterStateUpdateRequest createIndexClusterStateUpdateRequest = new CreateIndexClusterStateUpdateRequest(
902912
"downsample",

x-pack/plugin/downsample/src/test/java/org/elasticsearch/xpack/downsample/DownsampleActionSingleNodeTests.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.elasticsearch.index.IndexSettings;
5050
import org.elasticsearch.index.engine.VersionConflictEngineException;
5151
import org.elasticsearch.index.mapper.DateFieldMapper;
52+
import org.elasticsearch.index.mapper.FieldMapper;
5253
import org.elasticsearch.index.mapper.MapperService;
5354
import org.elasticsearch.index.mapper.TimeSeriesIdFieldMapper;
5455
import org.elasticsearch.index.mapper.TimeSeriesParams;
@@ -201,14 +202,19 @@ public void setup() throws IOException {
201202
IndexSettings.TIME_SERIES_START_TIME.getKey(),
202203
DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER.formatMillis(Instant.ofEpochMilli(startTime).toEpochMilli())
203204
)
204-
.put(IndexSettings.TIME_SERIES_END_TIME.getKey(), "2106-01-08T23:40:53.384Z");
205+
.put(IndexSettings.TIME_SERIES_END_TIME.getKey(), "2106-01-08T23:40:53.384Z")
206+
.put(FieldMapper.IGNORE_MALFORMED_SETTING.getKey(), randomBoolean());
205207

206208
if (randomBoolean()) {
207209
settings.put(IndexMetadata.SETTING_INDEX_HIDDEN, randomBoolean());
208210
}
209211

210212
XContentBuilder mapping = jsonBuilder().startObject().startObject("_doc").startObject("properties");
211-
mapping.startObject(FIELD_TIMESTAMP).field("type", "date").endObject();
213+
mapping.startObject(FIELD_TIMESTAMP).field("type", "date");
214+
if (settings.get(FieldMapper.IGNORE_MALFORMED_SETTING.getKey()).equals("true")) {
215+
mapping.field("ignore_malformed", false);
216+
}
217+
mapping.endObject();
212218

213219
// Dimensions
214220
mapping.startObject(FIELD_DIMENSION_1).field("type", "keyword").field("time_series_dimension", true).endObject();

0 commit comments

Comments
 (0)