在弹性搜索中对索引进行搜索查询时,时区导致不同的结果
Timezone causing different results when doing a search query to an index in Elastic Search
我正在尝试从特定索引的搜索查询(即:给定日期范围内的搜索结果)中找出结果。这样我就可以每天得到结果。
在上面,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
}
我正在尝试从特定索引的搜索查询(即:给定日期范围内的搜索结果)中找出结果。这样我就可以每天得到结果。
在上面,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
}