【发布时间】:2020-04-27 05:48:11
【问题描述】:
我想知道是否可以使用部分文档更新文档,并使用脚本执行另一个操作,例如,如果我添加 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 中做到这一点,我真的很感激。
【问题讨论】:
标签: python elasticsearch elasticsearch-painless