2020-04-28 19:38:01 -04:00
[[index-rollover]]
=== Rollover
2020-08-24 11:18:07 -04:00
When indexing time series data like logs or metrics, you can't write to a single index indefinitely.
2020-04-28 19:38:01 -04:00
To meet your indexing and search performance requirements and manage resource usage,
you write to an index until some threshold is met and
then create a new index and start writing to it instead.
Using rolling indices enables you to:
* Optimize the active index for high ingest rates on high-performance _hot_ nodes.
* Optimize for search performance on _warm_ nodes.
* Shift older, less frequently accessed data to less expensive _cold_ nodes,
* Delete data according to your retention policies by removing entire indices.
2020-08-24 11:18:07 -04:00
We recommend using <<indices-create-data-stream, data streams>> to manage time series
2020-06-15 10:16:14 -04:00
data. Data streams automatically track the write index while keeping configuration to a minimum.
2021-01-11 12:59:05 -05:00
Each data stream requires an <<index-templates,index template>> that contains:
2020-06-15 10:16:14 -04:00
* A name or wildcard (`*`) pattern for the data stream.
* The data stream's timestamp field. This field must be mapped as a
2020-07-07 14:59:35 -04:00
<<date,`date`>> or <<date_nanos,`date_nanos`>> field data type and must be
2020-06-15 10:16:14 -04:00
included in every document indexed to the data stream.
* The mappings and settings applied to each backing index when it's created.
Data streams are designed for append-only data, where the data stream name
can be used as the operations (read, write, rollover, shrink etc.) target.
2020-08-24 11:18:07 -04:00
If your use case requires data to be updated in place, you can instead manage your time series data using <<indices-aliases, indices aliases>>. However, there are a few more configuration steps and
2020-06-15 10:16:14 -04:00
concepts:
2020-04-28 19:38:01 -04:00
* An _index template_ that specifies the settings for each new index in the series.
You optimize this configuration for ingestion, typically using as many shards as you have hot nodes.
* An _index alias_ that references the entire set of indices.
* A single index designated as the _write index_.
This is the active index that handles all write requests.
On each rollover, the new index becomes the write index.
[discrete]
[role="xpack"]
[testenv="basic"]
[[ilm-automatic-rollover]]
=== Automatic rollover
{ilm-init} enables you to automatically roll over to a new index based
on the index size, document count, or age. When a rollover is triggered, a new
index is created, the write alias is updated to point to the new index, and all
subsequent updates are written to the new index.
TIP: Rolling over to a new index based on size, document count, or age is preferable
to time-based rollovers. Rolling over at an arbitrary time often results in
many small indices, which can have a negative impact on performance and
2020-06-15 10:16:14 -04:00
resource usage.