【问题标题】:Timezone causing different results when doing a search query to an index in Elastic Search对 Elastic Search 中的索引进行搜索查询时,时区会导致不同的结果
【发布时间】:2016-09-21 15:11:59
【问题描述】:

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

这是查询: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),因为从 (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 条记录的快照:

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

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

【问题讨论】:

  • 你能展示一个匹配但不应该匹配的示例文档吗?
  • @Val 我已根据要求编辑了问题。这是你要求的吗?

标签: elasticsearch logstash logstash-configuration elasticsearch-query


【解决方案1】:

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

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

【讨论】:

  • 太棒了,很高兴它有帮助!
猜你喜欢
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-21
  • 2014-12-03
  • 1970-01-01
  • 2016-01-23
相关资源
最近更新 更多