0
UNIXタイムスタンプ(エポックからの秒数)フィールドの値に基づいてレコードをインデックスする必要がありますが、インデックスはYYYY-MM-dd
の形式である必要があります。しかし、タイムスタンプフィールドの値はUNIXのタイムスタンプのままでなければなりません。logstashで変換されたunixタイムスタンプの値に基づくインデックス
質問には2つの部分があります。
- 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