最近研究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时区数据,一个是东八区数据:
{
{
"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内部对时间的匹配规则是什么样的?用什么数据结构?
1 个回复
陈水鱼 - 码农
赞同来自: