在弹性搜索中对索引进行搜索查询时,时区导致不同的结果

Timezone causing different results when doing a search query to an index in Elastic Search

我正在尝试从特定索引的搜索查询(即:给定日期范围内的搜索结果)中找出结果。这样我就可以每天得到结果。

这是查询:http://localhost:9200/dialog_test/_search?q=timestamp:[2016-08-03T00:00:00.128%20TO%202016-08-03T23:59:59.128]

在上面,timestamp 是我使用 logstash.conf 添加的字段,以便获得实际的日志时间。当我尝试查询这个时,令人惊讶的是我得到了一些点击(总点击:24)应该是 0,因为我没有从 (2016-08-03) 日期开始的任何日志记录。它实际上显示了第二天的计数(即:(2016-08-04),日志文件中有 24 条记录。我确定 timezone.

出了点问题

我的时区是 GMT+5:30

这是我过滤的部分logstash conf

filter {        
grok {
        patterns_dir => ["D:/ELK Stack/logstash/logstash-2.3.4/bin/patterns"]
        match => { "message" => "^%{LOGTIMESTAMP:logtimestamp}%{GREEDYDATA}" }          
}
    mutate {
        add_field => { "timestamp" => "%{logtimestamp}" }
        remove_field => ["logtimestamp"]
}
date {
        match => [ "timestamp" , "ISO8601" , "yyyyMMdd HH:mm:ss.SSS" ]
        target => "timestamp"
        locale => "en"
}}

编辑:

这是日志文件中日期为 (2016-08-04) 的前 24 条记录的快照:

这是我搜索 2016-08-03 日期时得到的 JSON 回复的快照:

我哪里错了?任何帮助都将不胜感激。

在您的 date 过滤器中,您需要添加一个 timezone

date {
    match => [ "timestamp" , "ISO8601" , "yyyyMMdd HH:mm:ss.SSS" ]
    target => "timestamp"
    locale => "en"
    timezone => "Asia/Calcutta"       <--- add this
}