Elasticsearch 时间类型总结
参考资料
Elasticsearch 官方文档
Elasticsearch 官方文档
Elasticsearch 可以写入、查询不同的时间类型,但当遇到 Unix 时间戳和其他时间格式的时候会有点混乱,因此本文主要是总结一下各种时间类型和其他的表示方式。
1 日期类型
JSON
没有日期类型,因此在 Elasticsearch 中可以表达成:
- 日期格式化的字符串,比如: "2015-01-01" 或者 "2015/01/01 12:10:30";
- 毫秒级别的
long
类型或秒级别的integer
类型,比如: 1515150699465, 1515150699;
实际上不管日期以何种格式写入,在 ES 内部都会先换成 UTC 时间并存储为 long
类型。
日期格式可以自定义,如果没有指定的话会使用以下的默认格式:"strict_date_optional_time||epoch_millis"
因此总结来说,不管哪种可以表示时间的格式写入,都可以用来表示时间!请利用 Kibana 或者 ES 的 RESTful API 来写入文档,并且进行后的查询。你就会发现用不同时间格式写入的数据,都可以用 ES 来进行查询、排序。
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"}
}
相关文章