Elasticsearch Object的部分更新(multi = True)

时间:2018-08-01 12:46:07

标签: elasticsearch elasticsearch-painless

如何使用字段映射<base href = "angProject1"/>更新文档, 当文档可以同时具有单个(字典)值和多个值(字典列表)时。

具有相同索引的文档示例:

Object(multi=True)中的单个值:

items

{ "title": "Some title", "items": { "id": 123, "key": "foo" } } 中的多个值:

items

1 个答案:

答案 0 :(得分:0)

您可以尝试使用以下脚本。
我故意格式化{ "title": "Some title", "items": [{ "id": 456, "key": "foo" }, { "id": 789, "key": "bar" }] } 属性以显示其中的内容。

inline

要使其起作用,请将POST index_name/_update_by_query { "search": { "term": { "items.key": "foo" } }, "script": { "inline": " if (ctx._source.items instanceof List) { for (item in ctx.source.items) { if (item.key == params.old_value) { item.key = params.new_value; break; } } } else { ctx._source.items.key = params.new_value; } ", "params": {"old_value": "foo", "new_value": "bar"}, "lang": "painless' } } 属性替换为单个行值。

inline