0
我需要基於UNIX時間戳記的值(自epoch以來的秒數)字段對索引進行索引,但索引需要採用YYYY-MM-dd
的形式。但是,時間戳字段的值需要保留爲UNIX時間戳。基於logstash中已轉換的unix時間戳值的索引
所以問題是兩部分。
- 如何在不破壞UNIX時間戳的情況下將時間戳文件轉換爲
YYYY-MM-dd
? - 如何將
YYYY-MM-dd
值應用於索引?
這是我到目前爲止。
input {
tcp {
port => 5000
}
}
filter {
csv {
separator => " " # <- this white space is actually a tab
skip_empty_columns => true
# other fields omitted for brevity
columns => ["timestamp"]
}
#grok {
# match => {"indexdate" => "%{NUMBER:timestamp}"}
#}
date {
match => ["timestamp", "YYYY-MM-DD"]
target => "@timestamp"
}
mutate {
# omitted for brevity
remove_field => []
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "indexname-%{+YYYY-MM-dd}"
}
}
我已經做了幾個不同的grok嘗試,但到目前爲止沒有運氣。
@val您好,感謝答案。如果可能,我有後續問題嗎?有沒有辦法做到這一點,保留'@ timestamp'的值,使它保持當前時間? – robbmj
運行'date'過濾器之前,您可以將'@ timestamp'複製到另一個字段中。或者,您可以在'date'過濾器中使用另一個目標字段並保留'@ timestamp'。這些工作中的任何一個? – Val
因此,我將'target =>「@timestamp」'更改爲'target =>「@mytimestamp」',這個功能完美無缺!在評估此行時,logstach如何知道使用哪個字段:'index =>「indexname - %{+ YYYY-MM-dd}」'? – robbmj