Попытка обновить определенное поле в elasticsearch через logstash. Можно ли через logstash обновить только набор полей?
Пожалуйста, найдите код ниже,
input {
file {
path => "/**/**/logstash/bin/*.log"
start_position => "beginning"
sincedb_path => "/dev/null"
type => "multi"
}
}
filter {
csv {
separator => "|"
columns => ["GEOREFID","COUNTRYNAME", "G_COUNTRY", "G_UPDATE", "G_DELETE", "D_COUNTRY", "D_UPDATE", "D_DELETE"]
}
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-data-monitor"
query => "GEOREFID:%{GEOREFID}"
fields => [["JSON_COUNTRY","G_COUNTRY"],
["XML_COUNTRY","D_COUNTRY"]]
}
if [G_COUNTRY] {
mutate {
update => { "D_COUNTRY" => "%{D_COUNTRY}"
}
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-data-monitor"
document_id => "%{GEOREFID}"
}
}
Мы используем вышеуказанную конфигурацию, когда мы используем это поле нулевого значения, которое удаляется вместо пропуска обновления нулевого значения.
Данные поступают из 2 разных источников. Один из файла XML, а другой из файла JSON.
Формат журнала XML: GEO-1 | CD | 23 | John | 892 | Канада | 31-01-2017 | QC | - | - | - | - | - Формат журнала JSON: GEO-1 | AS | 33 | - | - | - | - | - | Майк | 123 | США | 31-01-2017 | QC
При добавлении одного журнала в индекс будет создан новый документ. При чтении второго файла журнала необходимо обновить существующий документ. Обновление должно происходить только в первых 5 полях, если файл журнала - XML, и последних 5 полях, если файл журнала - в формате JSON. Пожалуйста, посоветуйте нам, как это сделать в logstash.
Пробовал с приведенным выше кодом. Пожалуйста, проверьте, и может ли кто-нибудь помочь, как это исправить?