JSON 没有日期类型,因此在 Elasticsearch 中可以表达成:
比如: 1515150699465, 1515150699;
实际上不管日期以何种格式写入,在 ES 内部都会先换成 UTC 时间并存储为 long 类型。
日期格式可以自定义,如果没有指定的话会使用以下的默认格式:
“strict_date_optional_time||epoch_millis”
date 类型的查询在内部转为 long 处理,聚合返回的结果再根据字段定义的格式转为字符串输出。
注: 日期将始终呈现为字符串,即使它们最初是在 JSON 文档中作为 long 串提供的。
日期格式自定义,如果没有格式指定,它会使用以下默认设置:
"strict_date_optional_time||epoch_millis"
PUT my_index
{
"mappings": {
"_doc": {
"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"}
}
注:sort 返回为数组,值均为毫秒时间戳。
PUT my_index
{
"mappings": {
"_doc": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
}
strict_date_optional_time||epoch_millis
1.https://www.elastic.co/guide/en/elasticsearch/reference/6.4/date.html
2.https://www.elastic.co/guide/en/elasticsearch/reference/6.4/mapping-date-format.html