后续负责es的维护,测试人员提了一个bug,时间范围查询某一个查询条件会多显示后一天的数据。
当时很纳闷,对于范围查询都是封装es同一套模板实现,不至于只单个出错误。
然后进head查看存入的Type数据,es的日期默认储存的是utc时间
其他时间存入的是年月日时分秒
interest_date 因需求存入的是年月日 后面系统自动补充为 00:00:00
原来如此。
简单说下之前代码逻辑
比如页面上搜索 2018-08-08到2018-08-08这一天的数据
后台接受数据 startTime 2018-08-08 00:00:00 endTime 2018-08-08 00:00:00
实现匹配并做代码处理会在endTime加一天处理
endTime = TimeUtils.addDays(endTime, 1);
最后条件为 08-09 00:00:00
而这种情况对于interest_date则行不通,导致08-09的数据会查询出来
解决方案:特殊处理下
Calendar calendar = Calendar.getInstance(); |
endTime 数据处理为08-08 23:59:59
后记:解决问题后发现跟es自身没啥太大关系,哈哈尴尬。还好是解决了封装的es操作方法的一个隐藏bug
- 本文标题: elasticSearch时间查询问题
- 文章作者: sherryriver(木木三可)
- 发布时间: 2018.08.30
- 本文链接: https://sherryriver.github.io/2018/08/30/es时间查询/
- 许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。