一。时间类型的本质
首先json是没有时间类型的,对于es来说,时间类型的标示可以是下面三种情况
1.一个时间格式的字符串,如:"2014-11-27T08:05:32Z","2015-01-01"
or "2015/01/01 12:10:30"
. 具体能使用什么格式可以通过自定定义时间类型的format属性配置。
2.一个长整形,代表从新纪元到现在的毫秒数,默认
3.一个整形,代表从新纪元到现在的秒数,这个需要创建时在format属性指定
但是内部es的其实都是转换到utc时间并作为一个长整形保存的。
二。多种格式的支持
1.时间格式的指定默认是"strict_date_optional_time||epoch_millis" 及:2014-11-27T08:05:32Z||长整形到毫秒
2.我们可以用||符号指定多种格式,如下
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
}
参考:
https://www.elastic.co/guide/en/elasticsearch/reference/6.1/date.html
https://www.elastic.co/guide/en/elasticsearch/reference/6.1/mapping-date-format.html#strict-date-time