Skip to content

Commit 9ff5a12

Browse files
authored
Update data streams implicit timestamp ignore_malformed settings (#96051)
In order to avoid failing to create the data stream when the mappings are merged, this PR updates the implicit @timestamp field to set ignore_malformed=false in case it is configured true at the index-wide setting.
1 parent 7d418ef commit 9ff5a12

File tree

4 files changed

+27
-4
lines changed

4 files changed

+27
-4
lines changed

docs/changelog/96051.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 96051
2+
summary: Update data streams implicit timestamp `ignore_malformed` settings
3+
area: Data streams
4+
type: enhancement
5+
issues: []

server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@ public class MetadataIndexTemplateService {
9191
static {
9292
final Map<String, Map<String, String>> defaultTimestampField = Map.of(
9393
DEFAULT_TIMESTAMP_FIELD,
94-
Map.of("type", DateFieldMapper.CONTENT_TYPE)
94+
// We inject ignore_malformed false so that if a user does not add the timestamp field it will explicitly skip applying any
95+
// other ignore_malformed configurations from the index settings.
96+
Map.of("type", DateFieldMapper.CONTENT_TYPE, "ignore_malformed", "false")
9597
);
9698
try {
9799
DEFAULT_TIMESTAMP_MAPPING = new CompressedXContent(

server/src/main/java/org/elasticsearch/index/IndexMode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ protected static String tsdbMode() {
225225
.startObject("properties")
226226
.startObject(DataStreamTimestampFieldMapper.DEFAULT_PATH)
227227
.field("type", DateFieldMapper.CONTENT_TYPE)
228+
.field("ignore_malformed", "false")
228229
.endObject()
229230
.endObject()
230231
.endObject())

server/src/test/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateServiceTests.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,7 +1246,12 @@ public void testDefinedTimestampMappingIsAddedForDataStreamTemplates() throws Ex
12461246

12471247
assertThat(
12481248
parsedMappings.get(0),
1249-
equalTo(Map.of("_doc", Map.of("properties", Map.of(DEFAULT_TIMESTAMP_FIELD, Map.of("type", "date")))))
1249+
equalTo(
1250+
Map.of(
1251+
"_doc",
1252+
Map.of("properties", Map.of(DEFAULT_TIMESTAMP_FIELD, Map.of("type", "date", "ignore_malformed", "false")))
1253+
)
1254+
)
12501255
);
12511256
assertThat(parsedMappings.get(1), equalTo(Map.of("_doc", Map.of("properties", Map.of("field1", Map.of("type", "keyword"))))));
12521257
assertThat(parsedMappings.get(2), equalTo(Map.of("_doc", Map.of("properties", Map.of("field2", Map.of("type", "integer"))))));
@@ -1353,7 +1358,12 @@ public void testUserDefinedMappingTakesPrecedenceOverDefault() throws Exception
13531358
}).toList();
13541359
assertThat(
13551360
parsedMappings.get(0),
1356-
equalTo(Map.of("_doc", Map.of("properties", Map.of(DEFAULT_TIMESTAMP_FIELD, Map.of("type", "date")))))
1361+
equalTo(
1362+
Map.of(
1363+
"_doc",
1364+
Map.of("properties", Map.of(DEFAULT_TIMESTAMP_FIELD, Map.of("type", "date", "ignore_malformed", "false")))
1365+
)
1366+
)
13571367
);
13581368
assertThat(
13591369
parsedMappings.get(1),
@@ -1402,7 +1412,12 @@ public void testUserDefinedMappingTakesPrecedenceOverDefault() throws Exception
14021412
}).toList();
14031413
assertThat(
14041414
parsedMappings.get(0),
1405-
equalTo(Map.of("_doc", Map.of("properties", Map.of(DEFAULT_TIMESTAMP_FIELD, Map.of("type", "date")))))
1415+
equalTo(
1416+
Map.of(
1417+
"_doc",
1418+
Map.of("properties", Map.of(DEFAULT_TIMESTAMP_FIELD, Map.of("type", "date", "ignore_malformed", "false")))
1419+
)
1420+
)
14061421
);
14071422
assertThat(
14081423
parsedMappings.get(1),

0 commit comments

Comments
 (0)