WARNING: Version 1.4 of Elasticsearch has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
_ttl
edit_ttl
editA lot of documents naturally come with an expiration date. Documents can
therefore have a _ttl (time to live), which will cause the expired
documents to be deleted automatically.
_ttl accepts two parameters which are described below, every other setting will be silently ignored.
enabled
editBy default it is disabled, in order to enable it, the following mapping should be defined:
{
"tweet" : {
"_ttl" : { "enabled" : true }
}
}
_ttl can only be enabled once and never be disabled again.
default
editYou can provide a per index/type default _ttl value as follows:
{
"tweet" : {
"_ttl" : { "enabled" : true, "default" : "1d" }
}
}
In this case, if you don’t provide a _ttl value in your query or in
the _source all tweets will have a _ttl of one day.
In case you do not specify a time unit like d (days), m (minutes),
h (hours), ms (milliseconds) or w (weeks), milliseconds is used as
default unit.
If no default is set and no _ttl value is given then the document
has an infinite _ttl and will not expire.
You can dynamically update the default value using the put mapping
API. It won’t change the _ttl of already indexed documents but will be
used for future documents.
Note on documents expiration
editExpired documents will be automatically deleted regularly. You can
dynamically set the indices.ttl.interval to fit your needs. The
default value is 60s.
The deletion orders are processed by bulk. You can set
indices.ttl.bulk_size to fit your needs. The default value is 10000.
Note that the expiration procedure handle versioning properly so if a document is updated between the collection of documents to expire and the delete order, the document won’t be deleted.