您可以使用按查询更新API进行批量更新。从ES
2.3开始,此方法有效,否则您需要安装插件。
POST index/_update_by_query{ "script": { "inline": "ctx._source.myProp += newProp", "params": { "newProp": "sit" } }, "query": { "match_all": {} }}当然,您可以使用任何查询,以选择
MyProp需要更新的文档。例如,您可以查询选择具有某些特定
MyProp值要替换的文档。
上面只会将一个新值添加到现有数组。如果需要完全替换
MyProp阵列,则还可以将脚本更改为此:
POST index/_update_by_query{ "script": { "inline": "ctx._source.myProp = newProps", "params": { "newProps": ["dolor", "sit"] } }, "query": { "match_all": {} }}请注意,您还需要启用动态脚本才能使其正常工作。
更新
如果您只想更新单个文档,则可以使用部分文档更新API,如下所示:
POST test/type1/1/_update{ "doc" : { "MyProp" : ["dolor", "sit"] }}这将有效替换
MyProp指定文档中的数组。
如果您想走批量路线,则不需要编写脚本即可实现所需的功能:
POST index/type/_bulk{ "update" : {"_id" : "1"} }{ "doc" : {"MyProp" : ["dolor", "sit"] } }{ "update" : {"_id" : "2"} }{ "doc" : {"MyProp" : ["dolor", "sit"] } }


