600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 关于在ElasticSearch中使用now函数进行时间范围过滤查询的问题

关于在ElasticSearch中使用now函数进行时间范围过滤查询的问题

时间:2021-07-15 13:58:53

相关推荐

关于在ElasticSearch中使用now函数进行时间范围过滤查询的问题

文章目录

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这个方法的问题

3. 问题解决思路

既然使用这个now会有问题,那我们就不使用他了。改为使用时间戳的形式,过滤结果也是对的。至于时区的问题,我们可以先在程序计算好时区,再把参数传进来。

4. 备注

一开始本来想要粗暴一点,直接在参数加上8h。但是大佬告诉我,加8h的话,在汇聚成直方图的时候,直方图的还是不对的。加1d倒是可以暂时显示正确的效果,但是很明显不要这么弄,这样的参数会把多的数据查进来。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。