Я хотел бы знать, возможно ли обновить документ, используя частичный документ, и использовать сценарий для выполнения другого действия, например, если я добавлю data1, а затем добавлю data2, я хочу, чтобы мой документ выглядел как final_result. Я хочу, чтобы все было заменено и добавлено, кроме поля тега.
data1 = {"name" : "myname", "code" : 123, "tag" : "first"}
data2 = {"name" : "myname", "code" : 555, "tag" : "second", "age":"50", "children": "3"}
final_result = {"name" : "myname", "code" : 555, "tag" : ["first","second"], "age":"50", "children": "3"}
Я могу добавить поле тега с помощью этого сценария, но я не знаю, как добавить недостающие поля одновременно, также я не знаю, какие поля могут быть добавлены в расширенный.
POST myindex/_update/1
{
"script" : {
"source": "if(! ctx._source.tag.contains(params.tag)){if (ctx._source.tag instanceof List) { ctx._source.tag.add(params.tag) } else { ctx._source.tag = [ctx._source.tag, params.tag] }}",
"lang": "painless",
"params" : {
"tag" : "sec"
}
}
}
Я очень ценю, если кто-нибудь может дать мне пример того, как это сделать в python.