Фильтр convert
mutate - это хеш, а не массив: https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-convert
Попробуйте это так:
input {
kafka {
bootstrap_servers => "localhost:9092"
topics => ["cars"]
}
}
filter {
csv {
separator => ","
columns => ["maker", "model", "mileage", "manufacture_year", "engine_displacement", "engine_power", "body_type", "color_slug", "stk_year", "transmission", "door_count", "seat_count", "fuel_type", "date_created", "date_last_seen", "price_eur"]
}
mutate {
convert => {
"mileage" => "integer"
"price_eur" => "float"
"engine_power" => "integer"
"door_power" => "integer"
"seat_count" => "integer"
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "cars1"
document_type => "sold_cars"
}
stdout {}
}
Вы также можете использовать convert
внутри самого фильтра CSV, например:
csv {
separator => ","
columns => ["maker", "model", "mileage", "manufacture_year", "engine_displacement", "engine_power", "body_type", "color_slug", "stk_year", "transmission", "door_count", "seat_count", "fuel_type", "date_created", "date_last_seen", "price_eur"]
convert => {
"mileage" => "integer"
"price_eur" => "float"
"engine_power" => "integer"
"door_power" => "integer"
"seat_count" => "integer"
}
}