[role="xpack"] [[set-up-a-data-stream]] == Set up a data stream To set up a data stream, follow these steps: . <>. . <>. . <>. . <>. [discrete] [[configure-a-data-stream-ilm-policy]] === Optional: Configure an {ilm-init} lifecycle policy While optional, we recommend you configure an <> to automate the management of your data stream's backing indices. In {kib}, open the menu and go to *Stack Management > Index Lifecycle Policies*. Click *Index Lifecycle Policies*. [role="screenshot"] image::images/ilm/create-policy.png[Index Lifecycle Policies page] [%collapsible] .API example ==== Use the <> to configure a policy: [source,console] ---- PUT /_ilm/policy/my-data-stream-policy { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size": "25GB" } } }, "delete": { "min_age": "30d", "actions": { "delete": {} } } } } } ---- ==== [discrete] [[create-a-data-stream-template]] === Create an index template . In {kib}, open the menu and go to *Stack Management > Index Management*. . In the *Index Templates* tab, click *Create template*. . In the Create template wizard, use the *Data stream* toggle to indicate the template is used for data streams. . Use the wizard to finish defining your template. Specify: * One or more index patterns that match the data stream's name. * Mappings and settings for the stream's backing indices. * A priority for the index template + [IMPORTANT] ==== {es} has built-in index templates for the `metrics-*-*`, `logs-*-*`, and `synthetics-*-*` index patterns, each with a priority of `100`. {ingest-guide}/ingest-management-overview.html[{agent}] uses these templates to create data streams. If you use {agent}, assign your index templates a priority lower than `100` to avoid overriding the built-in templates. Otherwise, use a non-overlapping index pattern or assign templates with an overlapping pattern a `priority` higher than `100`. For example, if you don't use {agent} and want to create a template for the `logs-*` index pattern, assign your template a priority of `200`. This ensures your template is applied instead of the built-in template for `logs-*-*`. ==== If the index template doesn't specify a mapping for the `@timestamp` field, {es} maps `@timestamp` as a `date` field with default options. If using {ilm-init}, specify your lifecycle policy in the `index.lifecycle.name` setting. TIP: Carefully consider your template's mappings and settings. Later changes may require reindexing. See <>. [role="screenshot"] image::images/data-streams/create-index-template.png[Create template page] [%collapsible] .API example ==== Use the <> to create an index template. The template must include an empty `data_stream` object, indicating it's used for data streams. [source,console] ---- PUT /_index_template/my-data-stream-template { "index_patterns": [ "my-data-stream*" ], "data_stream": { }, "priority": 200, "template": { "settings": { "index.lifecycle.name": "my-data-stream-policy" } } } ---- // TEST[continued] ==== [discrete] [[create-a-data-stream]] === Create the data stream To automatically create the data stream, submit an <> to the stream. The stream's name must match one of your template's index patterns. [source,console] ---- POST /my-data-stream/_doc/ { "@timestamp": "2020-12-06T11:04:05.000Z", "user": { "id": "vlb44hny" }, "message": "Login attempt failed" } ---- // TEST[continued] You can also use the <> to manually create the data stream. The stream's name must match one of your template's index patterns. [source,console] ---- PUT /_data_stream/my-data-stream-alt ---- // TEST[continued] [discrete] [[secure-a-data-stream]] === Secure the data stream To control access to the data stream and its data, use <>. [discrete] [[get-info-about-a-data-stream]] === Get information about a data stream In {kib}, open the menu and go to *Stack Management > Index Management*. In the *Data Streams* tab, click the data stream's name. [role="screenshot"] image::images/data-streams/data-streams-list.png[Data Streams tab] [%collapsible] .API example ==== Use the <> to retrieve information about one or more data streams: //// [source,console] ---- POST /my-data-stream/_rollover/ ---- // TEST[continued] //// [source,console] ---- GET /_data_stream/my-data-stream ---- // TEST[continued] ==== [discrete] [[delete-a-data-stream]] === Delete a data stream To delete a data stream and its backing indices, open the {kib} menu and go to *Stack Management > Index Management*. In the *Data Streams* tab, click the trash can icon. [role="screenshot"] image::images/data-streams/data-streams-list.png[Data Streams tab] [%collapsible] .API example ==== Use the <> to delete a data stream and its backing indices: [source,console] ---- DELETE /_data_stream/my-data-stream ---- // TEST[continued] ==== //// [source,console] ---- DELETE /_data_stream/* DELETE /_index_template/* DELETE /_ilm/policy/my-data-stream-policy ---- // TEST[continued] ////