0

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

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

在上面,时间戳是我使用 my 添加的一个字段,logstash.conf以获取实际的日志时间。当我尝试查询这个时,令人惊讶的是,我得到了一些命中(总命中数:24),因为从 (2016-08-03) 日期起我没有任何日志记录,所以应该是 0。它实际上显示了第二天的计数(即:(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 条记录的快照:

在此处输入图像描述

这是JSON我在搜索 2016-08-03 日期时得到的响应的快照:

在此处输入图像描述

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

4

1 回答 1

1

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

date {
    match => [ "timestamp" , "ISO8601" , "yyyyMMdd HH:mm:ss.SSS" ]
    target => "timestamp"
    locale => "en"
    timezone => "Asia/Calcutta"       <--- add this
}
于 2016-09-21T07:11:59.513 回答