Я использую logsta sh для индексации событий из базы данных. Мне нужно передать сценарий в выходной вывод, чтобы проиндексировать событие.
Я пробую что-то похожее на:
POST my-index/test/1000000000000104816264/_update
{
"script": {
"source": "def targets = ctx._source.properties.example.findAll(cat -> { for (condition in params.conditions.entrySet()) { if (cat[condition.getKey()] != condition.getValue()) { return false; } } return true; }); for (cat in targets) { for (change in params.changes.entrySet()) { cat[change.getKey()] = change.getValue() } }",
"params": {
"conditions": {
"Id": "1000000000000104816264",
"Id_2": "10535454779"
},
"changes": {
"descripcion": "My text Update",
"tipo": "Type Update"
}
}
}
}
Но я не знаю, как это сделать, чтобы если поиск ключей не существует, вставлю новый вложенный, а то если расширится, то обновит. Чтобы обновить, это работает, но я не знаю, как добавить добавление и в будущем удалить.
Как только вы сможете заставить это работать, идея состоит в том, чтобы использовать его в выводе logsta sh:
elasticsearch {
hosts => "localhost:9200"
index => "%{[@metadata][miEntidad]}"
document_type => "%{[@metadata][miDocumento]}"
document_id => "%{id}"
action => "update"
doc_as_upsert => true
script_type => "inline"
script => "" # here I could refer to the script
retry_on_conflict => "3"
}