高峰只对攀登它而不是仰望它的人来说才有真正意义。

es日期时间匹配的规则,底层是如何比较日期和时间的?

Elasticsearch | 作者 陈水鱼 | 发布于2019年05月08日 | 阅读数:3581

最近研究es的日期匹配问题,知道es的底层是存储Unix时间戳,并且录入的时间是可以有时区的信息的。
目前数据存储有三个数据,两个是0时区数据,一个是东八区数据:
{

{
"date"
: "2015-01-01T12:10:30Z"
}
},
{

{
"date"
: "2015-01-01T12:10:30"
}
},
{

{
"date"
: "2015-01-01T12:10:30+08:00"
}
}

当用没带时区信息的语句查询时,三条记录都可以查询出来:
{
"query": {
"range" : {
"date" : {
"gte": "2015-01-01 01:10:30",
"lte": "2015-01-01 11:10:30",
"format": "yyyy-MM-dd hh:mm:ss||yyyy"
}
}
}
}

当用带有时区的查询时,就可以精确查询:(只查询出一条)
{
"query": {
"range" : {
"date" : {
"gte": "2015-01-01T01:10:30",
"lte": "2015-01-01T11:10:30"

}
}
}
}

想请问es内部对时间的匹配规则是什么样的?用什么数据结构?
已邀请:

陈水鱼 - 码农

赞同来自:

问题解决了,如果没带时区信息的都会转换为0时区数据(长整形),上面的问题中,使用了hh:mm:ss来进行格式化数据,hh会把时间格式化到pm时段,数据就变大了

要回复问题请先登录注册