Elasticsearch-日期类型

date类型用于存储日期和时间。它是这样运作的:通常提供一个表示日期的字符串,例如2019-06-25T22:47。然后,ES解析这个字符串,然后将其作为long的数值存入Lucene的索引。该long型数值是从1970年1月1日00:00:00 UTC(UNIX纪元)到所提供的时间之间已经过去的毫秒数。
当搜索文档的时候,仍然提供date的字符串,在后台ES将这些字符串解析并按照数值来处理。这样做的原因是和字符串相比,数值在存储和处理时更快。
date字符串的数据格式是通过format选项来定义的,ES默认解析ISO 8601的时间戳。
ISO8601是一种交流日期和时间相关数据的国际标准,由于RFC 3339而广泛运用于时间戳。ISO 8601日期张下边这样:

2019-06-25T22:51:45.453-03:00

包含了亚秒和时区。

使用format选项来指定日期格式的时候,有以下两种选择
(1) 使用预定义的时间格式。例如,date格式解析2019-06-25这样的日期。
(2) 设置自己定制的格式。可以指定时间戳所遵循的模式。例如,指定MMMYYYY来解析 jun 2019这样的日期。 

使用定制的时间格式

定制版:’MMM DD YYYY’
在索引music的album类型下,添加新的属性映射,类型为date,format自定义

curl -XPUT 'localhost:9200/music/_mapping/album' -d '{
"album":{
"properties":{
"format_date":{
"type":"date",
"format":"MMM DD YYYY"
}
}
}
}'

 

新增一条数据

curl -XPUT 'localhost:9200/music/album/4' -d '{
"name":"十一月的肖邦",
"date":"2005-11-24T22:20",
"format_date":"Nov 24 2005"
}'