文章目录
1. 问题描述2. 问题分析2.1 在参数里面配置时区2.2 过滤字段为文本时的分词对时区造成了影响2.3 now函数的问题3. 问题解决思路4. 备注1. 问题描述
ES的默认时区是0区,而我们是在东八区。进行过滤时,我们采用了now函数。结果发现过滤结果不对,当天下午十点半的一条数据没有查出来。然后尝试在less than or equal的参数加了1d或者加了8h。过滤结果就是对的了。2. 问题分析
我们在东八区,参数加了8h之后查询结果正确,基本可以确定是时区的配置问题。2.1 在参数里面配置时区
开始先尝试加上时区的配置,结果没有起效。2.2 过滤字段为文本时的分词对时区造成了影响
看到一篇博客:ElasticSearch6.X时间范围查询无效bug 博客里面说到是过滤字段的分词原因。但是这里说的是ES6.x。我们用的版本是7.x,并且这个字段的类型是date。2.3 now函数的问题
然后我们去看了ES的官方文档,里面提到,now的值不受time-zone影响翻译一下就是
确定是now这个方法的问题