ElasticSearch日期范围查询的问题

为轮子而生 2020-03-02 04:02:26
ElasticSearch中Time字段的定义:


查询语句:

{
"query": {
"bool": {
"must": [
{
"range": {
"Time": {
"lte": "2020-02-29T23:59:59"
}
}
}
]
}
},
"from": 0,
"size": 1000
}


查询2月29日之前的记录,但总是莫名其妙查到一些3月的记录


如果lte改成 "2020-02-29T23:00:00",查询结果就正常了,没有3月的

很疑惑这是什么原因呢?

...全文
915 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2020-03-03
  • 打赏
  • 举报
回复
怎么做都可以,只要保证es的时区和数据库的时区就好了
为轮子而生 2020-03-03
  • 打赏
  • 举报
回复
引用 2 楼 percentfl 的回复:
怀疑是 时区的问题,图中所示的两个时间都是7点的记录,如果是时区问题,用了一个中国时区和一个零时区的比较的话,23:59:59就会看到7点的记录,而23点就会看到。 你可以试试传一个23:49:00的看看是不是这个问题
引用 3 楼 qybao 的回复:
看样子像时区问题 闰秒问题不会差那么多时间的,只会差一秒,刚才没细看 像LS说的试试,传23:49:00看看,是不是48分的被选出,50分的没被选出,如果是这样就确定是时区问题了
非常感谢,还真是时区问题。 那么除了在查询时将时间值减8小时,还有其他的办法吗? 比如设置ES为本地时区,或存储数据时自动按本地时区?
qybao 2020-03-02
  • 打赏
  • 举报
回复
看样子像时区问题
闰秒问题不会差那么多时间的,只会差一秒,刚才没细看
像LS说的试试,传23:49:00看看,是不是48分的被选出,50分的没被选出,如果是这样就确定是时区问题了
percentfl 2020-03-02
  • 打赏
  • 举报
回复
怀疑是 时区的问题,图中所示的两个时间都是7点的记录,如果是时区问题,用了一个中国时区和一个零时区的比较的话,23:59:59就会看到7点的记录,而23点就会看到。
你可以试试传一个23:49:00的看看是不是这个问题
qybao 2020-03-02
  • 打赏
  • 举报
回复
难道是闰秒的问题?你可以谷歌百度一下闰秒问题

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧