| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | [[mapping-ttl-field]]=== `_ttl` fielddeprecated[2.0.0,The current `_ttl` implementation is deprecated and will be replaced with a different implementation in a future version]Some types of documents, such as session data or special offers, come with anexpiration date. The `_ttl` field allows you to specify the minimum time adocument should live, after which time the document is deleted automatically.[TIP].Prefer index-per-timeframe to TTL======================================================With TTL , expired documents first have to be marked as deleted then laterpurged from the index when segments are merged.  For append-only time-baseddata such as log events, it is much more efficient to use an index-per-day /week / month instead of TTLs.  Old log data can be removed by simply deletingold indices.======================================================The `_ttl` field may be enabled as follows:[source,js]-------------------------------PUT my_index{  "mappings": {    "my_type": {      "_ttl": {        "enabled": true      }    }  }}PUT my_index/my_type/1?ttl=10m <1>{  "text": "Will expire in 10 minutes"}PUT my_index/my_type/2 <2>{  "text": "Will not expire"}-------------------------------// CONSOLE<1> This document will expire 10 minutes after being indexed.<2> This document has no TTL set and will not expire.The expiry time is calculated as the value of the<<mapping-timestamp-field,`_timestamp`>> field (or `now()` if the `_timestamp`is not enabled) plus the `ttl` specified in the indexing request.==== Default TTLYou can provide a default `_ttl`, which will be applied to indexing requests where the `ttl` is not specified:[source,js]-------------------------------PUT my_index{  "mappings": {    "my_type": {      "_ttl": {        "enabled": true,        "default": "5m"      }    }  }}PUT my_index/my_type/1?ttl=10m <1>{  "text": "Will expire in 10 minutes"}PUT my_index/my_type/2 <2>{  "text": "Will expire in 5 minutes"}-------------------------------// CONSOLE<1> This document will expire 10 minutes after being indexed.<2> This document has no TTL set and so will expire after the default 5 minutes.The `default` value can use <<time-units,time units>> like `d` for days, andwill use `ms` as the default unit if no time unit is provided.You can dynamically update the `default` value using the put mappingAPI. It won't change the `_ttl` of already indexed documents but will beused for future documents.==== Note on documents expirationExpired documents will be automatically deleted periodically. The followingsettings control the expiry process:`indices.ttl.interval`::How often the purge process should run. Defaults to `60s`. Expired documentsmay still be retrieved before they are purged.`indices.ttl.bulk_size`::How many deletions are handled by a single <<docs-bulk,`bulk`>> request. Thedefault value is `10000`.==== Note on `detect_noop`If an update tries to update just the `_ttl` without changing the `_source` ofthe document it's expiration time won't be updated if `detect_noop` is `true`.In 2.1 `detect_noop` defaults to `true`.
 |