私はlogstashを使用してcsvファイルからelasticsearchにデータをインポートしています。
インポート中に、他の 2 つのフィールドの値を持つ新しいフィールドを作成したいと考えています。これが私のインポートのスニペットです:
input {
file {
path => "/data/xyz/*.csv"
start_position => "beginning"
ignore_older => 0
sincedb_path => "/dev/null"
}
}
filter {
if [path] =~ "csv1" {
csv {
separator => ";"
columns =>
[
"name1",
"name2",
"name3",
"ID"
]
}
mutate {
add_field => {
"searchfield" => "%{name1} %{name2} %{name3}"
}
}
}
output {
if [path] =~ "csv1" {
elasticsearch {
hosts => "localhost"
index => "my_index"
document_id => "%{ID}"
}
}
}
}
これは希望どおりに機能しますが、たとえば name3 が空の行では、logstash は%{name3}
新しいフィールドに書き込みます。空でない場合にのみ値を追加する方法はありますか?