Default to @timestamp in composable template datastream definition (#59317) (#59516)

This makes the data_stream timestamp field specification optional when
defining a composable template.
When there isn't one specified it will default to `@timestamp`.

(cherry picked from commit 5609353c5d164e15a636c22019c9c17fa98aac30)
Signed-off-by: Andrei Dan <andrei.dan@elastic.co>
This commit is contained in:
Andrei Dan 2020-07-14 12:36:54 +01:00 committed by GitHub
parent 2e71d0aa91
commit 7dcdaeae49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
48 changed files with 127 additions and 222 deletions

View File

@ -2037,7 +2037,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
CompressedXContent mappings = new CompressedXContent("{\"properties\":{\"@timestamp\":{\"type\":\"date\"}}}"); CompressedXContent mappings = new CompressedXContent("{\"properties\":{\"@timestamp\":{\"type\":\"date\"}}}");
Template template = new Template(null, mappings, null); Template template = new Template(null, mappings, null);
ComposableIndexTemplate indexTemplate = new ComposableIndexTemplate(Collections.singletonList(dataStreamName), template, ComposableIndexTemplate indexTemplate = new ComposableIndexTemplate(Collections.singletonList(dataStreamName), template,
Collections.emptyList(), 1L, 1L, new HashMap<>(), new ComposableIndexTemplate.DataStreamTemplate("@timestamp")); Collections.emptyList(), 1L, 1L, new HashMap<>(), new ComposableIndexTemplate.DataStreamTemplate());
PutComposableIndexTemplateRequest putComposableIndexTemplateRequest = PutComposableIndexTemplateRequest putComposableIndexTemplateRequest =
new PutComposableIndexTemplateRequest().name("ds-template").create(true).indexTemplate(indexTemplate); new PutComposableIndexTemplateRequest().name("ds-template").create(true).indexTemplate(indexTemplate);
AcknowledgedResponse response = execute(putComposableIndexTemplateRequest, AcknowledgedResponse response = execute(putComposableIndexTemplateRequest,

View File

@ -86,7 +86,7 @@ public class GetComposableIndexTemplatesResponseTests extends ESTestCase {
Long priority = randomBoolean() ? null : randomNonNegativeLong(); Long priority = randomBoolean() ? null : randomNonNegativeLong();
Long version = randomBoolean() ? null : randomNonNegativeLong(); Long version = randomBoolean() ? null : randomNonNegativeLong();
if (randomBoolean()) { if (randomBoolean()) {
dataStreamTemplate = new ComposableIndexTemplate.DataStreamTemplate("@timestamp"); dataStreamTemplate = new ComposableIndexTemplate.DataStreamTemplate();
} }
return new ComposableIndexTemplate(patterns, randomTemplate(), composedOf, priority, version, meta, dataStreamTemplate); return new ComposableIndexTemplate(patterns, randomTemplate(), composedOf, priority, version, meta, dataStreamTemplate);
} }

View File

@ -52,9 +52,7 @@ PUT /_ilm/policy/logs_policy
PUT /_index_template/logs_data_stream PUT /_index_template/logs_data_stream
{ {
"index_patterns": [ "logs*" ], "index_patterns": [ "logs*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"mappings": { "mappings": {
"properties": { "properties": {
@ -69,9 +67,7 @@ PUT /_index_template/logs_data_stream
PUT /_index_template/new_logs_data_stream PUT /_index_template/new_logs_data_stream
{ {
"index_patterns": [ "new_logs*" ], "index_patterns": [ "new_logs*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"mappings": { "mappings": {
"properties": { "properties": {
@ -124,9 +120,7 @@ for a new field, `message`, to the template.
PUT /_index_template/logs_data_stream PUT /_index_template/logs_data_stream
{ {
"index_patterns": [ "logs*" ], "index_patterns": [ "logs*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"mappings": { "mappings": {
"properties": { "properties": {
@ -193,9 +187,7 @@ mapping parameter to `true`.
PUT /_index_template/logs_data_stream PUT /_index_template/logs_data_stream
{ {
"index_patterns": [ "logs*" ], "index_patterns": [ "logs*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"mappings": { "mappings": {
"properties": { "properties": {
@ -279,9 +271,7 @@ template's `index.refresh_interval` index setting to `30s` (30 seconds).
PUT /_index_template/logs_data_stream PUT /_index_template/logs_data_stream
{ {
"index_patterns": [ "logs*" ], "index_patterns": [ "logs*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"mappings": { "mappings": {
"properties": { "properties": {
@ -345,9 +335,7 @@ The following <<indices-templates,put index template API>> requests adds new
PUT /_index_template/logs_data_stream PUT /_index_template/logs_data_stream
{ {
"index_patterns": [ "logs*" ], "index_patterns": [ "logs*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"mappings": { "mappings": {
"properties": { "properties": {
@ -460,9 +448,7 @@ uses the `logs_data_stream` template as its basis, with the following changes:
PUT /_index_template/new_logs_data_stream PUT /_index_template/new_logs_data_stream
{ {
"index_patterns": [ "new_logs*" ], "index_patterns": [ "new_logs*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"mappings": { "mappings": {
"properties": { "properties": {

View File

@ -134,9 +134,7 @@ this pattern.
---- ----
==== ====
* A `data_stream` definition containing the `timestamp_field` property. * A `data_stream` object with an empty body (`{ }`).
This timestamp field must be included in every document indexed to the data
stream.
The template can also contain: The template can also contain:
@ -176,9 +174,7 @@ configures the `logs_data_stream` template.
PUT /_index_template/logs_data_stream PUT /_index_template/logs_data_stream
{ {
"index_patterns": [ "logs*" ], "index_patterns": [ "logs*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"settings": { "settings": {
"index.lifecycle.name": "logs_policy" "index.lifecycle.name": "logs_policy"

View File

@ -19,8 +19,15 @@ the following:
PUT /_index_template/logs_data_stream PUT /_index_template/logs_data_stream
{ {
"index_patterns": [ "logs*" ], "index_patterns": [ "logs*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp" "template": {
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
}
}
}
} }
} }

View File

@ -121,19 +121,17 @@ with the options you specify.
PUT _index_template/timeseries_template PUT _index_template/timeseries_template
{ {
"index_patterns": ["timeseries"], <1> "index_patterns": ["timeseries"], <1>
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp" <2>
},
"template": { "template": {
"settings": { "settings": {
"number_of_shards": 1, "number_of_shards": 1,
"number_of_replicas": 1, "number_of_replicas": 1,
"index.lifecycle.name": "timeseries_policy" <3> "index.lifecycle.name": "timeseries_policy" <2>
}, },
"mappings": { "mappings": {
"properties": { "properties": {
"@timestamp": { "@timestamp": {
"type": "date" <4> "type": "date" <3>
} }
} }
} }
@ -143,11 +141,9 @@ PUT _index_template/timeseries_template
// TEST[continued] // TEST[continued]
<1> Apply the template when a document is indexed into the `timeseries` target. <1> Apply the template when a document is indexed into the `timeseries` target.
<2> Identifies the timestamp field for the data source. This field must be present <2> The name of the {ilm-init} policy used to manage the data stream.
in all documents indexed into the `timeseries` data stream. <3> A <<date,`date`>> or <<date_nanos,`date_nanos`>> field mapping for the
<3> The name of the {ilm-init} policy used to manage the data stream. "@timestamp" field the data stream will use.
<4> A <<date,`date`>> or <<date_nanos,`date_nanos`>> field mapping for the
timestamp field specified in the `timestamp_field` property
==== ====
[discrete] [discrete]

View File

@ -25,9 +25,7 @@ PUT /_index_template/template
} }
} }
}, },
"data_stream": { "data_stream": {}
"timestamp_field": "@timestamp"
}
} }
---- ----
//// ////

View File

@ -23,9 +23,7 @@ PUT /_index_template/template
} }
} }
}, },
"data_stream": { "data_stream": {}
"timestamp_field": "@timestamp"
}
} }
PUT /_data_stream/my-data-stream PUT /_data_stream/my-data-stream

View File

@ -35,9 +35,7 @@ PUT /_ilm/policy/my-lifecycle-policy
PUT /_index_template/my-index-template PUT /_index_template/my-index-template
{ {
"index_patterns": [ "my-data-stream*" ], "index_patterns": [ "my-data-stream*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"mappings": { "mappings": {
"properties": { "properties": {

View File

@ -493,19 +493,10 @@ PUT /_index_template/template_1
} }
} }
}, },
"data_stream": { "data_stream": {}
"timestamp_field": "@timestamp"
}
} }
-------------------------------------------------- --------------------------------------------------
Required properties of a data stream definition:
`timestamp_field`::
(Required, string) The name of the timestamp field. This field must be present
in all documents indexed into the data stream and must be of type
<<date, `date`>> or <<date_nanos, `date_nanos`>>.
[[multiple-component-templates]] [[multiple-component-templates]]
===== Composing multiple component templates ===== Composing multiple component templates

View File

@ -30,9 +30,7 @@ PUT /my-index/_alias/f-alias
PUT /_index_template/foo_data_stream PUT /_index_template/foo_data_stream
{ {
"index_patterns": [ "foo" ], "index_patterns": [ "foo" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"mappings": { "mappings": {
"properties": { "properties": {

View File

@ -241,9 +241,7 @@ PUT _index_template/template
} }
} }
}, },
"data_stream": { "data_stream": {}
"timestamp_field": "@timestamp"
}
} }
----------------------------------- -----------------------------------
// TEST // TEST

View File

@ -1,8 +1,8 @@
--- ---
setup: setup:
- skip: - skip:
version: "7.8.99 - " version: "7.9.99 - "
reason: "resolve index api only supported in 7.9+" reason: "enable in 7.9+ when backported"
features: allowed_warnings features: allowed_warnings
- do: - do:

View File

@ -102,7 +102,7 @@ public class ComposableTemplateIT extends ESIntegTestCase {
Exception expectedException = expectThrows(Exception.class, () -> ComposableIndexTemplate.parse(parser)); Exception expectedException = expectThrows(Exception.class, () -> ComposableIndexTemplate.parse(parser));
ComposableIndexTemplate template = new ComposableIndexTemplate(List.of("logs-*-*"), null, null, null, null, ComposableIndexTemplate template = new ComposableIndexTemplate(List.of("logs-*-*"), null, null, null, null,
null, new ComposableIndexTemplate.DataStreamTemplate("@timestamp")); null, new ComposableIndexTemplate.DataStreamTemplate());
Exception e = expectThrows(IllegalArgumentException.class, () -> client().execute(PutComposableIndexTemplateAction.INSTANCE, Exception e = expectThrows(IllegalArgumentException.class, () -> client().execute(PutComposableIndexTemplateAction.INSTANCE,
new PutComposableIndexTemplateAction.Request("my-it").indexTemplate(template)).actionGet()); new PutComposableIndexTemplateAction.Request("my-it").indexTemplate(template)).actionGet());
Exception actualException = (Exception) e.getCause(); Exception actualException = (Exception) e.getCause();

View File

@ -29,6 +29,7 @@ import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.ConstructingObjectParser;
import org.elasticsearch.common.xcontent.ObjectParser;
import org.elasticsearch.common.xcontent.ToXContentObject; import org.elasticsearch.common.xcontent.ToXContentObject;
import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentParser;
@ -249,31 +250,20 @@ public class ComposableIndexTemplate extends AbstractDiffable<ComposableIndexTem
public static class DataStreamTemplate implements Writeable, ToXContentObject { public static class DataStreamTemplate implements Writeable, ToXContentObject {
private static final ConstructingObjectParser<DataStreamTemplate, Void> PARSER = new ConstructingObjectParser<>( private static final ObjectParser<DataStreamTemplate, Void> PARSER = new ObjectParser<>(
"data_stream_template", "data_stream_template",
args -> new DataStreamTemplate((String) args[0]) DataStreamTemplate::new
); );
static { public DataStreamTemplate() {
PARSER.declareString(ConstructingObjectParser.constructorArg(), DataStream.TIMESTAMP_FIELD_FIELD);
}
private final String timestampField;
public DataStreamTemplate(String timestampField) {
if (FIXED_TIMESTAMP_FIELD.equals(timestampField) == false) {
throw new IllegalArgumentException("unexpected timestamp field [" + timestampField + "]");
}
this.timestampField = timestampField;
} }
public String getTimestampField() { public String getTimestampField() {
return timestampField; return FIXED_TIMESTAMP_FIELD;
} }
DataStreamTemplate(StreamInput in) throws IOException { DataStreamTemplate(StreamInput in) {
this(in.readString()); this();
} }
/** /**
@ -281,18 +271,16 @@ public class ComposableIndexTemplate extends AbstractDiffable<ComposableIndexTem
*/ */
public Map<String, Object> getDataSteamMappingSnippet() { public Map<String, Object> getDataSteamMappingSnippet() {
return singletonMap(MapperService.SINGLE_MAPPING_NAME, singletonMap("_data_stream_timestamp", return singletonMap(MapperService.SINGLE_MAPPING_NAME, singletonMap("_data_stream_timestamp",
singletonMap("path", timestampField))); singletonMap("path", FIXED_TIMESTAMP_FIELD)));
} }
@Override @Override
public void writeTo(StreamOutput out) throws IOException { public void writeTo(StreamOutput out) throws IOException {
out.writeString(timestampField);
} }
@Override @Override
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
builder.startObject(); builder.startObject();
builder.field(DataStream.TIMESTAMP_FIELD_FIELD.getPreferredName(), timestampField);
builder.endObject(); builder.endObject();
return builder; return builder;
} }
@ -300,14 +288,12 @@ public class ComposableIndexTemplate extends AbstractDiffable<ComposableIndexTem
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; return o != null && getClass() == o.getClass();
DataStreamTemplate that = (DataStreamTemplate) o;
return timestampField.equals(that.timestampField);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(timestampField); return DataStreamTemplate.class.hashCode();
} }
} }
} }

View File

@ -36,7 +36,7 @@ public class AutoCreateActionTests extends ESTestCase {
Metadata metadata; Metadata metadata;
{ {
Metadata.Builder mdBuilder = new Metadata.Builder(); Metadata.Builder mdBuilder = new Metadata.Builder();
DataStreamTemplate dataStreamTemplate = new DataStreamTemplate("@timestamp"); DataStreamTemplate dataStreamTemplate = new DataStreamTemplate();
mdBuilder.put("1", new ComposableIndexTemplate(Collections.singletonList("legacy-logs-*"), null, null, 10L, null, null, null)); mdBuilder.put("1", new ComposableIndexTemplate(Collections.singletonList("legacy-logs-*"), null, null, 10L, null, null, null));
mdBuilder.put("2", new ComposableIndexTemplate(Collections.singletonList("logs-*"), mdBuilder.put("2", new ComposableIndexTemplate(Collections.singletonList("logs-*"),
null, null, 20L, null, null, dataStreamTemplate)); null, null, 20L, null, null, dataStreamTemplate));

View File

@ -48,8 +48,8 @@ import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.CheckedFunction; import org.elasticsearch.common.CheckedFunction;
import org.elasticsearch.common.Strings; import org.elasticsearch.common.Strings;
import org.elasticsearch.common.UUIDs; import org.elasticsearch.common.UUIDs;
import org.elasticsearch.common.settings.IndexScopedSettings;
import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.compress.CompressedXContent;
import org.elasticsearch.common.settings.IndexScopedSettings;
import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.json.JsonXContent; import org.elasticsearch.common.xcontent.json.JsonXContent;
@ -539,7 +539,7 @@ public class MetadataRolloverServiceTests extends ESTestCase {
public void testRolloverClusterStateForDataStream() throws Exception { public void testRolloverClusterStateForDataStream() throws Exception {
final DataStream dataStream = DataStreamTests.randomInstance(); final DataStream dataStream = DataStreamTests.randomInstance();
ComposableIndexTemplate template = new ComposableIndexTemplate(Collections.singletonList(dataStream.getName() + "*"), ComposableIndexTemplate template = new ComposableIndexTemplate(Collections.singletonList(dataStream.getName() + "*"),
null, null, null, null, null, new ComposableIndexTemplate.DataStreamTemplate("@timestamp")); null, null, null, null, null, new ComposableIndexTemplate.DataStreamTemplate());
Metadata.Builder builder = Metadata.builder(); Metadata.Builder builder = Metadata.builder();
builder.put("template", template); builder.put("template", template);
for (Index index : dataStream.getIndices()) { for (Index index : dataStream.getIndices()) {
@ -638,7 +638,7 @@ public class MetadataRolloverServiceTests extends ESTestCase {
sourceIndexName = dataStream.getIndices().get(dataStream.getIndices().size() - 1).getName(); sourceIndexName = dataStream.getIndices().get(dataStream.getIndices().size() - 1).getName();
defaultRolloverIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1); defaultRolloverIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
ComposableIndexTemplate template = new ComposableIndexTemplate(Collections.singletonList(dataStream.getName() + "*"), ComposableIndexTemplate template = new ComposableIndexTemplate(Collections.singletonList(dataStream.getName() + "*"),
null, null, null, null, null, new ComposableIndexTemplate.DataStreamTemplate("@timestamp")); null, null, null, null, null, new ComposableIndexTemplate.DataStreamTemplate());
builder.put("template", template); builder.put("template", template);
for (Index index : dataStream.getIndices()) { for (Index index : dataStream.getIndices()) {
builder.put(DataStreamTestHelper.getIndexMetadataBuilderForIndex(index)); builder.put(DataStreamTestHelper.getIndexMetadataBuilderForIndex(index));

View File

@ -148,7 +148,7 @@ public class ComposableIndexTemplateTests extends AbstractDiffableSerializationT
if (randomBoolean()) { if (randomBoolean()) {
return null; return null;
} else { } else {
return new ComposableIndexTemplate.DataStreamTemplate("@timestamp"); return new ComposableIndexTemplate.DataStreamTemplate();
} }
} }

View File

@ -46,7 +46,7 @@ public class MetadataCreateDataStreamServiceTests extends ESTestCase {
final MetadataCreateIndexService metadataCreateIndexService = getMetadataCreateIndexService(); final MetadataCreateIndexService metadataCreateIndexService = getMetadataCreateIndexService();
final String dataStreamName = "my-data-stream"; final String dataStreamName = "my-data-stream";
ComposableIndexTemplate template = new ComposableIndexTemplate(Collections.singletonList(dataStreamName + "*"), ComposableIndexTemplate template = new ComposableIndexTemplate(Collections.singletonList(dataStreamName + "*"),
null, null, null, null, null, new ComposableIndexTemplate.DataStreamTemplate("@timestamp")); null, null, null, null, null, new ComposableIndexTemplate.DataStreamTemplate());
ClusterState cs = ClusterState.builder(new ClusterName("_name")) ClusterState cs = ClusterState.builder(new ClusterName("_name"))
.metadata(Metadata.builder().put("template", template).build()) .metadata(Metadata.builder().put("template", template).build())
.build(); .build();
@ -140,7 +140,7 @@ public class MetadataCreateDataStreamServiceTests extends ESTestCase {
public static ClusterState createDataStream(final String dataStreamName) throws Exception { public static ClusterState createDataStream(final String dataStreamName) throws Exception {
final MetadataCreateIndexService metadataCreateIndexService = getMetadataCreateIndexService(); final MetadataCreateIndexService metadataCreateIndexService = getMetadataCreateIndexService();
ComposableIndexTemplate template = new ComposableIndexTemplate(Collections.singletonList(dataStreamName + "*"), ComposableIndexTemplate template = new ComposableIndexTemplate(Collections.singletonList(dataStreamName + "*"),
null, null, null, null, null, new ComposableIndexTemplate.DataStreamTemplate("@timestamp")); null, null, null, null, null, new ComposableIndexTemplate.DataStreamTemplate());
ClusterState cs = ClusterState.builder(new ClusterName("_name")) ClusterState cs = ClusterState.builder(new ClusterName("_name"))
.metadata(Metadata.builder().put("template", template).build()) .metadata(Metadata.builder().put("template", template).build())
.build(); .build();

View File

@ -847,7 +847,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
" }\n" + " }\n" +
" }"), null), " }"), null),
org.elasticsearch.common.collect.List.of("ct1"), 0L, 1L, null, org.elasticsearch.common.collect.List.of("ct1"), 0L, 1L, null,
new ComposableIndexTemplate.DataStreamTemplate(DEFAULT_TIMESTAMP_FIELD)); new ComposableIndexTemplate.DataStreamTemplate());
state = service.addIndexTemplateV2(state, true, "logs-data-stream-template", it); state = service.addIndexTemplateV2(state, true, "logs-data-stream-template", it);
List<CompressedXContent> mappings = MetadataIndexTemplateService.collectMappings(state, "logs-data-stream-template", List<CompressedXContent> mappings = MetadataIndexTemplateService.collectMappings(state, "logs-data-stream-template",
@ -985,7 +985,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
state = service.addComponentTemplate(state, true, "ct1", ct1); state = service.addComponentTemplate(state, true, "ct1", ct1);
ComposableIndexTemplate it = new ComposableIndexTemplate(org.elasticsearch.common.collect.List.of("logs*"), null, ComposableIndexTemplate it = new ComposableIndexTemplate(org.elasticsearch.common.collect.List.of("logs*"), null,
org.elasticsearch.common.collect.List.of("ct1"), 0L, 1L, null, org.elasticsearch.common.collect.List.of("ct1"), 0L, 1L, null,
new ComposableIndexTemplate.DataStreamTemplate(DEFAULT_TIMESTAMP_FIELD)); new ComposableIndexTemplate.DataStreamTemplate());
state = service.addIndexTemplateV2(state, true, "logs-template", it); state = service.addIndexTemplateV2(state, true, "logs-template", it);
List<CompressedXContent> mappings = MetadataIndexTemplateService.collectMappings(state, "logs-template", List<CompressedXContent> mappings = MetadataIndexTemplateService.collectMappings(state, "logs-template",
@ -1030,7 +1030,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
" }"), null); " }"), null);
ComposableIndexTemplate it = new ComposableIndexTemplate( ComposableIndexTemplate it = new ComposableIndexTemplate(
org.elasticsearch.common.collect.List.of("timeseries*"), template, null, 0L, 1L, null, org.elasticsearch.common.collect.List.of("timeseries*"), template, null, 0L, 1L, null,
new ComposableIndexTemplate.DataStreamTemplate(DEFAULT_TIMESTAMP_FIELD)); new ComposableIndexTemplate.DataStreamTemplate());
state = service.addIndexTemplateV2(state, true, "timeseries-template", it); state = service.addIndexTemplateV2(state, true, "timeseries-template", it);
List<CompressedXContent> mappings = MetadataIndexTemplateService.collectMappings(state, "timeseries-template", List<CompressedXContent> mappings = MetadataIndexTemplateService.collectMappings(state, "timeseries-template",
@ -1352,7 +1352,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
.build(); .build();
ComposableIndexTemplate template = new ComposableIndexTemplate(Collections.singletonList("logs-*-*"), ComposableIndexTemplate template = new ComposableIndexTemplate(Collections.singletonList("logs-*-*"),
null, null, 100L, null, null, new ComposableIndexTemplate.DataStreamTemplate("@timestamp")); null, null, 100L, null, null, new ComposableIndexTemplate.DataStreamTemplate());
state = service.addIndexTemplateV2(state, false, "logs", template); state = service.addIndexTemplateV2(state, false, "logs", template);
@ -1396,7 +1396,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
// Change the pattern to one that doesn't match the data stream // Change the pattern to one that doesn't match the data stream
e = expectThrows(IllegalArgumentException.class, () -> { e = expectThrows(IllegalArgumentException.class, () -> {
ComposableIndexTemplate newTemplate = new ComposableIndexTemplate(Collections.singletonList("logs-postgres-*"), null, ComposableIndexTemplate newTemplate = new ComposableIndexTemplate(Collections.singletonList("logs-postgres-*"), null,
null, 100L, null, null, new ComposableIndexTemplate.DataStreamTemplate("@timestamp")); null, 100L, null, null, new ComposableIndexTemplate.DataStreamTemplate());
service.addIndexTemplateV2(stateWithDS, false, "logs", newTemplate); service.addIndexTemplateV2(stateWithDS, false, "logs", newTemplate);
}); });
@ -1406,7 +1406,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
// Add an additional template that matches our data stream at a lower priority // Add an additional template that matches our data stream at a lower priority
ComposableIndexTemplate mysqlTemplate = new ComposableIndexTemplate(Collections.singletonList("logs-mysql-*"), null, ComposableIndexTemplate mysqlTemplate = new ComposableIndexTemplate(Collections.singletonList("logs-mysql-*"), null,
null, 50L, null, null, new ComposableIndexTemplate.DataStreamTemplate("@timestamp")); null, 50L, null, null, new ComposableIndexTemplate.DataStreamTemplate());
ClusterState stateWithDSAndTemplate = service.addIndexTemplateV2(stateWithDS, false, "logs-mysql", mysqlTemplate); ClusterState stateWithDSAndTemplate = service.addIndexTemplateV2(stateWithDS, false, "logs-mysql", mysqlTemplate);
// We should be able to replace the "logs" template, because we have the "logs-mysql" template that can handle the data stream // We should be able to replace the "logs" template, because we have the "logs-mysql" template that can handle the data stream

View File

@ -78,7 +78,7 @@ public class ToAndFromJsonMetadataTests extends ESTestCase {
5L, 5L,
4L, 4L,
Collections.singletonMap("my_meta", Collections.singletonMap("potato", "chicken")), Collections.singletonMap("my_meta", Collections.singletonMap("potato", "chicken")),
randomBoolean() ? null : new ComposableIndexTemplate.DataStreamTemplate("@timestamp"))) randomBoolean() ? null : new ComposableIndexTemplate.DataStreamTemplate()))
.put(IndexMetadata.builder("test12") .put(IndexMetadata.builder("test12")
.settings(settings(Version.CURRENT) .settings(settings(Version.CURRENT)
.put("setting1", "value1") .put("setting1", "value1")

View File

@ -43,9 +43,7 @@ backing indices, the user can retrieve a document directly from `.ds-logs-000002
PUT /_index_template/logs_data_stream PUT /_index_template/logs_data_stream
{ {
"index_patterns": [ "logs*" ], "index_patterns": [ "logs*" ],
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"template": { "template": {
"mappings": { "mappings": {
"properties": { "properties": {

View File

@ -1,9 +1,7 @@
{ {
"index_patterns": ["logs-*-*"], "index_patterns": ["logs-*-*"],
"priority": 100, "priority": 100,
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"composed_of": [ "composed_of": [
"logs-mappings", "logs-mappings",
"logs-settings" "logs-settings"

View File

@ -1,9 +1,7 @@
{ {
"index_patterns": ["metrics-*-*"], "index_patterns": ["metrics-*-*"],
"priority": 100, "priority": 100,
"data_stream": { "data_stream": {},
"timestamp_field": "@timestamp"
},
"composed_of": [ "composed_of": [
"metrics-mappings", "metrics-mappings",
"metrics-settings" "metrics-settings"

View File

@ -12,8 +12,7 @@
name: my-template1 name: my-template1
body: body:
index_patterns: [simple-data-stream1] index_patterns: [simple-data-stream1]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -3,7 +3,6 @@ setup:
features: allowed_warnings features: allowed_warnings
version: " - 7.9.99" version: " - 7.9.99"
reason: "enable in 7.9+ when backported" reason: "enable in 7.9+ when backported"
- do: - do:
allowed_warnings: allowed_warnings:
- "index template [my-template1] has index patterns [simple-data-stream1] matching patterns from existing older templates [global] with patterns (global => [*]); this template [my-template1] will take precedence during new index creation" - "index template [my-template1] has index patterns [simple-data-stream1] matching patterns from existing older templates [global] with patterns (global => [*]); this template [my-template1] will take precedence during new index creation"
@ -14,8 +13,8 @@ setup:
template: template:
settings: settings:
index.number_of_replicas: 0 index.number_of_replicas: 0
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
allowed_warnings: allowed_warnings:
- "index template [my-template2] has index patterns [simple-data-stream2] matching patterns from existing older templates [global] with patterns (global => [*]); this template [my-template2] will take precedence during new index creation" - "index template [my-template2] has index patterns [simple-data-stream2] matching patterns from existing older templates [global] with patterns (global => [*]); this template [my-template2] will take precedence during new index creation"
@ -28,8 +27,7 @@ setup:
properties: properties:
'@timestamp': '@timestamp':
type: date_nanos type: date_nanos
data_stream: data_stream: {}
timestamp_field: '@timestamp'
--- ---
"Create data stream": "Create data stream":
@ -243,8 +241,8 @@ setup:
name: generic_logs_template name: generic_logs_template
body: body:
index_patterns: logs-* index_patterns: logs-*
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
index: index:
@ -299,8 +297,7 @@ setup:
name: generic_logs_template name: generic_logs_template
body: body:
index_patterns: logs-* index_patterns: logs-*
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
catch: bad_request catch: bad_request

View File

@ -12,8 +12,7 @@
name: my-template1 name: my-template1
body: body:
index_patterns: [simple-data-stream1] index_patterns: [simple-data-stream1]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -12,8 +12,7 @@
name: my-template name: my-template
body: body:
index_patterns: [logs-*] index_patterns: [logs-*]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -61,8 +60,7 @@
name: my-template1 name: my-template1
body: body:
index_patterns: [simple-data-stream1] index_patterns: [simple-data-stream1]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -101,7 +99,7 @@
"Prohibit shrink on data stream's write index": "Prohibit shrink on data stream's write index":
- skip: - skip:
version: " - 7.9.99" version: " - 7.9.99"
reason: "data streams only supported in 7.9+" reason: "enable in 7.9+ when backported"
features: allowed_warnings features: allowed_warnings
- do: - do:
@ -111,8 +109,7 @@
name: my-template1 name: my-template1
body: body:
index_patterns: [simple-data-stream1] index_patterns: [simple-data-stream1]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -149,8 +146,7 @@
name: my-template1 name: my-template1
body: body:
index_patterns: [simple-data-stream1] index_patterns: [simple-data-stream1]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -171,7 +167,7 @@
"Prohibit split on data stream's write index": "Prohibit split on data stream's write index":
- skip: - skip:
version: " - 7.9.99" version: " - 7.9.99"
reason: "enable in 7.9+ when backported" reason: "data streams only supported in 7.9+"
features: allowed_warnings features: allowed_warnings
- do: - do:
@ -181,8 +177,7 @@
name: my-template1 name: my-template1
body: body:
index_patterns: [simple-data-stream1] index_patterns: [simple-data-stream1]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -12,8 +12,7 @@
name: generic_logs_template name: generic_logs_template
body: body:
index_patterns: logs-* index_patterns: logs-*
data_stream: data_stream: {}
timestamp_field: '@timestamp'
template: template:
settings: settings:
number_of_shards: 1 number_of_shards: 1

View File

@ -4,7 +4,6 @@ setup:
features: allowed_warnings features: allowed_warnings
version: " - 7.9.99" version: " - 7.9.99"
reason: "enable in 7.9+ when backported" reason: "enable in 7.9+ when backported"
- do: - do:
allowed_warnings: allowed_warnings:
- "index template [logs_template] has index patterns [logs-foobar] matching patterns from existing older templates [global] with patterns (global => [*]); this template [logs_template] will take precedence during new index creation" - "index template [logs_template] has index patterns [logs-foobar] matching patterns from existing older templates [global] with patterns (global => [*]); this template [logs_template] will take precedence during new index creation"
@ -12,8 +11,7 @@ setup:
name: logs_template name: logs_template
body: body:
index_patterns: logs-foobar index_patterns: logs-foobar
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -41,8 +39,8 @@ teardown:
--- ---
"Verify get mapping api": "Verify get mapping api":
- skip: - skip:
version: " - 7.8.99" version: " - 7.9.99"
reason: "data streams only supported in 7.9+" reason: "enable in 7.9+ when backported"
- do: - do:
indices.get_mapping: indices.get_mapping:
@ -53,8 +51,9 @@ teardown:
--- ---
"Verify shard stores api": "Verify shard stores api":
- skip: - skip:
version: " - 7.8.99" version: " - 7.9.99"
reason: "data streams only supported in 7.9+" reason: "change to 7.8.99 after backport"
features: allowed_warnings
- do: - do:
allowed_warnings: allowed_warnings:
@ -67,8 +66,7 @@ teardown:
settings: settings:
number_of_shards: "1" number_of_shards: "1"
number_of_replicas: "0" number_of_replicas: "0"
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -115,8 +113,7 @@ teardown:
name: my-template1 name: my-template1
body: body:
index_patterns: [simple-data-stream1] index_patterns: [simple-data-stream1]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -148,8 +145,7 @@ teardown:
name: my-template1 name: my-template1
body: body:
index_patterns: [simple-data-stream1] index_patterns: [simple-data-stream1]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -182,8 +178,7 @@ teardown:
name: my-template1 name: my-template1
body: body:
index_patterns: [simple-data-stream1] index_patterns: [simple-data-stream1]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -10,8 +10,7 @@ setup:
name: my-template name: my-template
body: body:
index_patterns: [simple-*] index_patterns: [simple-*]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
--- ---
"Delete backing index on data stream": "Delete backing index on data stream":
@ -69,7 +68,7 @@ setup:
"Attempt to delete write index on data stream is rejected": "Attempt to delete write index on data stream is rejected":
- skip: - skip:
version: " - 7.9.99" version: " - 7.9.99"
reason: "enable in 7.9+ when backported" reason: "enable in 7.9+ when backported9+"
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -12,8 +12,7 @@
name: my-template name: my-template
body: body:
index_patterns: [data-*] index_patterns: [data-*]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -12,8 +12,7 @@
name: my-template name: my-template
body: body:
index_patterns: [data-*] index_patterns: [data-*]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -12,8 +12,7 @@ setup:
name: my-template1 name: my-template1
body: body:
index_patterns: [simple-data-stream1] index_patterns: [simple-data-stream1]
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
allowed_warnings: allowed_warnings:
@ -22,13 +21,7 @@ setup:
name: my-template2 name: my-template2
body: body:
index_patterns: [simple-data-stream2] index_patterns: [simple-data-stream2]
template: data_stream: {}
mappings:
properties:
'@timestamp':
type: date
data_stream:
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -12,8 +12,7 @@ setup:
name: generic_logs_template name: generic_logs_template
body: body:
index_patterns: logs-* index_patterns: logs-*
data_stream: data_stream: {}
timestamp_field: '@timestamp'
--- ---
teardown: teardown:

View File

@ -294,7 +294,7 @@ public class DataStreamIT extends ESIntegTestCase {
null, null,
null, null,
null, null,
new ComposableIndexTemplate.DataStreamTemplate("@timestamp") new ComposableIndexTemplate.DataStreamTemplate()
) )
); );
client().execute(PutComposableIndexTemplateAction.INSTANCE, request).actionGet(); client().execute(PutComposableIndexTemplateAction.INSTANCE, request).actionGet();
@ -376,7 +376,7 @@ public class DataStreamIT extends ESIntegTestCase {
null, null,
null, null,
null, null,
new ComposableIndexTemplate.DataStreamTemplate("@timestamp") new ComposableIndexTemplate.DataStreamTemplate()
) )
); );
@ -837,7 +837,7 @@ public class DataStreamIT extends ESIntegTestCase {
null, null,
null, null,
null, null,
new ComposableIndexTemplate.DataStreamTemplate("@timestamp") new ComposableIndexTemplate.DataStreamTemplate()
) )
); );
client().execute(PutComposableIndexTemplateAction.INSTANCE, createTemplateRequest).actionGet(); client().execute(PutComposableIndexTemplateAction.INSTANCE, createTemplateRequest).actionGet();
@ -1005,7 +1005,7 @@ public class DataStreamIT extends ESIntegTestCase {
null, null,
null, null,
null, null,
new ComposableIndexTemplate.DataStreamTemplate("@timestamp") new ComposableIndexTemplate.DataStreamTemplate()
) )
); );
client().execute(PutComposableIndexTemplateAction.INSTANCE, request).actionGet(); client().execute(PutComposableIndexTemplateAction.INSTANCE, request).actionGet();

View File

@ -17,8 +17,7 @@
properties: properties:
'@timestamp': '@timestamp':
type: date type: date
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -125,7 +125,7 @@ public final class TimeSeriesRestDriver {
StringEntity templateJSON = new StringEntity( StringEntity templateJSON = new StringEntity(
String.format(Locale.ROOT, "{\n" + String.format(Locale.ROOT, "{\n" +
" \"index_patterns\": \"%s\",\n" + " \"index_patterns\": \"%s\",\n" +
" \"data_stream\": { \"timestamp_field\": \"@timestamp\" },\n" + " \"data_stream\": {},\n" +
" \"template\": %s\n" + " \"template\": %s\n" +
"}", indexPattern, Strings.toString(builder)), "}", indexPattern, Strings.toString(builder)),
ContentType.APPLICATION_JSON); ContentType.APPLICATION_JSON);

View File

@ -729,7 +729,7 @@ public class ClassificationIT extends MlNativeDataFrameAnalyticsIntegTestCase {
" }"; " }";
if (isDatastream) { if (isDatastream) {
try { try {
createDataStreamAndTemplate(index, "@timestamp", mapping); createDataStreamAndTemplate(index, mapping);
} catch (IOException ex) { } catch (IOException ex) {
throw new ElasticsearchException(ex); throw new ElasticsearchException(ex);
} }

View File

@ -114,7 +114,7 @@ public class DatafeedJobsIT extends MlNativeAutodetectIntegTestCase {
" }" + " }" +
" }\n" + " }\n" +
" }"; " }";
createDataStreamAndTemplate("datafeed_data_stream", "@timestamp", mapping); createDataStreamAndTemplate("datafeed_data_stream", mapping);
long numDocs = randomIntBetween(32, 2048); long numDocs = randomIntBetween(32, 2048);
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
long oneWeekAgo = now - 604800000; long oneWeekAgo = now - 604800000;

View File

@ -275,7 +275,7 @@ abstract class MlNativeIntegTestCase extends ESIntegTestCase {
} }
} }
protected static void createDataStreamAndTemplate(String dataStreamName, String timeField, String mapping) throws IOException { protected static void createDataStreamAndTemplate(String dataStreamName, String mapping) throws IOException {
client().execute(PutComposableIndexTemplateAction.INSTANCE, client().execute(PutComposableIndexTemplateAction.INSTANCE,
new PutComposableIndexTemplateAction.Request(dataStreamName + "_template") new PutComposableIndexTemplateAction.Request(dataStreamName + "_template")
.indexTemplate(new ComposableIndexTemplate(Collections.singletonList(dataStreamName), .indexTemplate(new ComposableIndexTemplate(Collections.singletonList(dataStreamName),
@ -284,7 +284,7 @@ abstract class MlNativeIntegTestCase extends ESIntegTestCase {
null, null,
null, null,
null, null,
new ComposableIndexTemplate.DataStreamTemplate(timeField)))) new ComposableIndexTemplate.DataStreamTemplate())))
.actionGet(); .actionGet();
client().execute(CreateDataStreamAction.INSTANCE, new CreateDataStreamAction.Request(dataStreamName)).actionGet(); client().execute(CreateDataStreamAction.INSTANCE, new CreateDataStreamAction.Request(dataStreamName)).actionGet();
} }

View File

@ -487,7 +487,7 @@ public class RegressionIT extends MlNativeDataFrameAnalyticsIntegTestCase {
" }"; " }";
if (dataStream) { if (dataStream) {
try { try {
createDataStreamAndTemplate(sourceIndex, "@timestamp", mapping); createDataStreamAndTemplate(sourceIndex, mapping);
} catch (IOException ex) { } catch (IOException ex) {
throw new ElasticsearchException(ex); throw new ElasticsearchException(ex);
} }

View File

@ -1,8 +1,8 @@
--- ---
"Verify data stream resolvability for xpack apis": "Verify data stream resolvability for xpack apis":
- skip: - skip:
version: " - 7.8.99" version: " - 7.9.99"
reason: "data streams only supported in 7.9+" reason: "enable in 7.9+ when backported"
features: allowed_warnings features: allowed_warnings
- do: - do:
@ -17,8 +17,7 @@
properties: properties:
'@timestamp': '@timestamp':
type: date type: date
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -54,8 +53,8 @@
--- ---
"Verify data stream resolvability in ilm explain api": "Verify data stream resolvability in ilm explain api":
- skip: - skip:
version: " - 7.8.99" version: " - 7.9.99"
reason: "data streams only supported in 7.9+" reason: "enable in 7.9+ when backported"
features: allowed_warnings features: allowed_warnings
- do: - do:
@ -88,8 +87,7 @@
name: generic_logs_template name: generic_logs_template
body: body:
index_patterns: logs-* index_patterns: logs-*
data_stream: data_stream: {}
timestamp_field: '@timestamp'
template: template:
settings: settings:
index.lifecycle.name: "my_lifecycle" index.lifecycle.name: "my_lifecycle"
@ -119,8 +117,8 @@
--- ---
"Verify data stream resolvability rollup": "Verify data stream resolvability rollup":
- skip: - skip:
version: " - 7.8.99" version: " - 7.9.99"
reason: "data streams only supported in 7.9+" reason: "enable in 7.9+ when backported"
features: allowed_warnings features: allowed_warnings
- do: - do:
@ -135,8 +133,7 @@
properties: properties:
'@timestamp': '@timestamp':
type: date type: date
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -196,8 +193,7 @@
type: date type: date
settings: settings:
index.lifecycle.name: "my_moveable_timeseries_lifecycle" index.lifecycle.name: "my_moveable_timeseries_lifecycle"
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -261,8 +257,7 @@
properties: properties:
'@timestamp': '@timestamp':
type: date type: date
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -318,8 +313,7 @@
properties: properties:
'@timestamp': '@timestamp':
type: date type: date
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -358,8 +352,7 @@
properties: properties:
'@timestamp': '@timestamp':
type: date type: date
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:
@ -433,8 +426,7 @@
type: keyword type: keyword
price: price:
type: integer type: integer
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -136,8 +136,8 @@
--- ---
"Cannot freeze write index for data stream": "Cannot freeze write index for data stream":
- skip: - skip:
version: " - 7.8.99" version: " - 7.9.99"
reason: "data streams only supported in 7.9+" reason: "enable in 7.9+ when backported"
features: allowed_warnings features: allowed_warnings
- do: - do:
@ -152,8 +152,7 @@
properties: properties:
'@timestamp': '@timestamp':
type: date type: date
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -61,8 +61,7 @@ setup:
properties: properties:
'@timestamp': '@timestamp':
type: date type: date
data_stream: data_stream: {}
timestamp_field: '@timestamp'
--- ---
teardown: teardown:

View File

@ -121,7 +121,6 @@ public abstract class TransformRestTestCase extends ESRestTestCase {
"{\n" + "{\n" +
" \"index_patterns\": [ \"" + indexName + "\" ],\n" + " \"index_patterns\": [ \"" + indexName + "\" ],\n" +
" \"data_stream\": {\n" + " \"data_stream\": {\n" +
" \"timestamp_field\": \"@timestamp\"\n" +
" },\n" + " },\n" +
" \"template\": \n" + Strings.toString(builder) + " \"template\": \n" + Strings.toString(builder) +
"}" "}"

View File

@ -68,8 +68,8 @@ setup:
properties: properties:
'@timestamp': '@timestamp':
type: date type: date
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
allowed_warnings: allowed_warnings:
- "index template [my-template2] has index patterns [simple-data-stream2] matching patterns from existing older templates [global] with patterns (global => [*]); this template [my-template2] will take precedence during new index creation" - "index template [my-template2] has index patterns [simple-data-stream2] matching patterns from existing older templates [global] with patterns (global => [*]); this template [my-template2] will take precedence during new index creation"
@ -82,8 +82,7 @@ setup:
properties: properties:
'@timestamp': '@timestamp':
type: date type: date
data_stream: data_stream: {}
timestamp_field: '@timestamp'
- do: - do:
indices.create_data_stream: indices.create_data_stream:

View File

@ -33,7 +33,6 @@ public class DataStreamsUpgradeIT extends AbstractUpgradeTestCase {
" }\n" + " }\n" +
" },\n" + " },\n" +
" \"data_stream\":{\n" + " \"data_stream\":{\n" +
" \"timestamp_field\":\"@timestamp\"" +
" }\n" + " }\n" +
" }"; " }";
Request request = new Request("PUT", "/_index_template/1"); Request request = new Request("PUT", "/_index_template/1");