2013-08-28 19:24:34 -04:00
|
|
|
[[mapping-timestamp-field]]
|
|
|
|
=== `_timestamp`
|
|
|
|
|
|
|
|
The `_timestamp` field allows to automatically index the timestamp of a
|
2015-06-22 03:16:53 -04:00
|
|
|
document. If it is not provided it will be automatically set
|
2014-07-25 09:14:31 -04:00
|
|
|
to a <<mapping-timestamp-field-default,default date>>.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[float]
|
|
|
|
==== enabled
|
|
|
|
|
2014-03-07 08:21:45 -05:00
|
|
|
By default it is disabled. In order to enable it, the following mapping
|
2013-08-28 19:24:34 -04:00
|
|
|
should be defined:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
|
|
|
"tweet" : {
|
|
|
|
"_timestamp" : { "enabled" : true }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
[float]
|
2014-07-25 09:14:31 -04:00
|
|
|
[[mapping-timestamp-field-format]]
|
2013-08-28 19:24:34 -04:00
|
|
|
==== format
|
|
|
|
|
|
|
|
You can define the <<mapping-date-format,date
|
|
|
|
format>> used to parse the provided timestamp value. For example:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
|
|
|
"tweet" : {
|
|
|
|
"_timestamp" : {
|
|
|
|
"enabled" : true,
|
|
|
|
"path" : "post_date",
|
|
|
|
"format" : "YYYY-MM-dd"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
|
2015-07-07 03:30:45 -04:00
|
|
|
Note, the default format is `epoch_millis||strictDateOptionalTime`. The timestamp value will
|
2013-08-28 19:24:34 -04:00
|
|
|
first be parsed as a number and if it fails the format will be tried.
|
2014-07-25 09:14:31 -04:00
|
|
|
|
|
|
|
[float]
|
|
|
|
[[mapping-timestamp-field-default]]
|
|
|
|
==== default
|
|
|
|
|
|
|
|
You can define a default value for when timestamp is not provided
|
|
|
|
within the index request or in the `_source` document.
|
|
|
|
|
|
|
|
By default, the default value is `now` which means the date the document was processed by the indexing chain.
|
|
|
|
|
2014-12-30 11:32:50 -05:00
|
|
|
You can reject documents which do not provide a `timestamp` value by setting `ignore_missing` to false (default to `true`):
|
2014-07-25 09:14:31 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
|
|
|
"tweet" : {
|
|
|
|
"_timestamp" : {
|
|
|
|
"enabled" : true,
|
2014-12-30 11:32:50 -05:00
|
|
|
"ignore_missing" : false
|
2014-07-25 09:14:31 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
You can also set the default value to any date respecting <<mapping-timestamp-field-format,timestamp format>>:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
|
|
|
"tweet" : {
|
|
|
|
"_timestamp" : {
|
|
|
|
"enabled" : true,
|
|
|
|
"format" : "YYYY-MM-dd",
|
|
|
|
"default" : "1970-01-01"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
|
2014-11-21 20:23:38 -05:00
|
|
|
If you don't provide any timestamp value, _timestamp will be set to this default value.
|
2014-07-25 09:14:31 -04:00
|
|
|
|
2014-12-30 11:32:50 -05:00
|
|
|
In elasticsearch 1.4, we allowed setting explicitly `"default":null` which is not possible anymore
|
2015-01-29 13:17:41 -05:00
|
|
|
as we added a new `ignore_missing` setting.
|
2014-12-30 11:32:50 -05:00
|
|
|
When reading an index created with elasticsearch 1.4 and using this, we automatically update it by
|
|
|
|
removing `"default": null` and setting `"ignore_missing": false`
|
|
|
|
|