У меня два вопроса:
парсинг xml данных и добавление их в массив в записи в индексе
проверка для существующей записи в индексе и, если она существует, добавьте новые данные этой записи в массив существующей записи
У меня есть вход jdb c, который имеет xml column,
input {
jdbc {
....
statement => "SELECT event_xml....
}
}
, а затем фильтр xml для анализа данных. Как сделать последние 3 xpath-значения массивом? Нужен ли мне фильтр мутации или ruby? Я не могу понять это
filter {
xml {
source => "event_xml"
remove_namespaces => true
store_xml => false
force_array => false
xpath => [ "/CaseNumber/text()", "case_number" ]
xpath => [ "/FormName/text()", "[conversations][form_name]" ]
xpath => [ "/EventDate/text()", "[conversations][event_date]" ]
xpath => [ "/CaseNote/text()", "[conversations][case_note]" ]
}
}
, поэтому что-то вроде этого будет выглядеть в поиске Elasti c.
{
"case_number" : "12345",
"conversations" :
[
{
"form_name" : "form1",
"event_date" : "2019-01-09T00:00:00Z",
"case_note" : "this is a case note"
}
]
}
Итак, второй вопрос, если есть уже уникальный case_number «12345» вместо создания новой записи для этого, добавьте новые значения xml в массив разговоров. так бы это выглядело
{
"case_number" : "12345",
"conversations" : [
{
"form_name" : "form1",
"event_date" : "2019-01-09T00:00:00Z",
"case_note" : "this is a case note"
},
{
"form_name" : "form2",
"event_date" : "2019-05-09T00:00:00Z",
"case_note" : "this is another case note"
}
]
}
мой выходной фильтр
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "cases"
manage_template => false
}
}
Возможно ли это? спасибо