最近研究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内部对时间的匹配规则是什么样的?用什么数据结构?

本文探讨了Elasticsearch在处理日期字段时的内部匹配规则,包括如何存储Unix时间戳和处理不同时区的数据。通过具体示例展示了无时区和带时区查询的区别,解释了ES对时间数据的格式化处理方式。

4957

被折叠的 条评论
为什么被折叠?



