Как сгенерировать @timestamp в logstash путем объединения двух полей/столбцов ввода csv
У нас есть данные, поступающие из внешних источников, как показано ниже в файле csv:
orderid,OrderDate,BusinessMinute,Quantity,Price
31874,01-01-2013,00:06,2,17.9
Данные имеют date
в одном столбце и time
в другом столбце - мне нужно создать метку времени, объединив эти два столбца вместе.
Я использую csv filter
для чтения вышеуказанных данных из файла, используя следующую конфигурацию в logstash, которая генерирует собственную метку времени:
input {
file {
path => "/root/data/import/Order.csv"
start_position => "beginning"
}
}
filter {
csv {
columns => ["orderid","OrderDate","BusinessMinute","Quantity","Price"]
separator => ","
}
}
output {
elasticsearch {
action => "index"
host => "localhost"
index => "demo"
workers => 1
}
}
Как сделать комбинацию OrderDate + Business Minute
как @timestamp
?
Ответы
Ответ 1
Использовать фильтр mutate, чтобы объединить поля OrderDate и BusinessMinute в одно (временное) поле, а затем использовать дату фильтр и удалите поле, если оно выполнено успешно.
filter {
mutate {
add_field => {
"timestamp" => "%{OrderDate} %{BusinessMinute}"
}
}
date {
match => ["timestamp", "..."]
remove_field => ["timestamp"]
}
}