本地英文版地址: ../en/date.html
JSON没有日期数据类型,因此Elasticsearch中的日期可以是下列之一:
-
包含格式化日期的字符串,例如
"2015-01-01"
或"2015/01/01 12:10:30"
。 - 一个长整型数字,表示自纪元以来的毫秒数(milliseconds-since-the-epoch)。
- 一个整型数字,表示从纪元开始的秒数(seconds-since-the-epoch)。
在内部,日期被转换为UTC(如果指定了时区)并存储为一个长整型数字,表示自纪元以来的毫秒数。
对日期的查询在内部转换为对这种长整型表示形式的范围查询,聚合的结果和存储的字段根据与字段相关联的日期格式转换回字符串。
日期总是以字符串的形式呈现,即使它们最初在JSON文档中是以长整型形式提供的。
可以自定义日期格式,但是如果没有指定format
,则使用默认格式:
"strict_date_optional_time||epoch_millis"
这意味着它将接受带有可选时间戳的日期,这些时间戳符合strict_date_optional_time
或 自纪元以来的毫秒数(milliseconds-sin-the-epoch)支持的格式。
例如:
PUT my_index { "mappings": { "properties": { "date": { "type": "date" } } } } PUT my_index/_doc/1 { "date": "2015-01-01" } PUT my_index/_doc/2 { "date": "2015-01-01T12:10:30Z" } PUT my_index/_doc/3 { "date": 1420070400001 } GET my_index/_search { "sort": { "date": "asc"} }
可以指定多种格式,用||
作为分隔符将它们分隔开。
将依次尝试每种格式,直到找到匹配的格式。
第一种格式将用于将自纪元以来的毫秒(milliseconds-since-the-epoch)值转换回字符串。
PUT my_index { "mappings": { "properties": { "date": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } } }
date
字段接受以下参数:
to |
|
是否应该以列跨度(column-stride)的方式将字段存储在磁盘上,以便以后用于排序、聚合或编写脚本? 接受 |
|
可以解析的日期格式。
默认为 |
|
|
解析日期时要使用的区域设置,因为月份在所有语言中都没有相同的名称和(或)缩写。
默认为 |
如果为 |
|
字段是否可以搜索?接受 |
|
接受一个已配置的 |
|
字段值是否应该与 |
|
与该字段有关的元信息。 |