首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对多个文档使用相同脚本的Elasticsearch批量更新

对多个文档使用相同脚本的Elasticsearch批量更新
EN

Stack Overflow用户
提问于 2020-09-07 21:02:50
回答 1查看 270关注 0票数 0

我正在尝试对多个文档运行批量更新语句。然而,我想为它们执行相同的script

让我们看一下下面的例子:

代码语言:javascript
复制
POST _bulk
{ "update": {"_id": "1", "_index": "test", "retry_on_conflict" : 3} }
{ "script": { "source": "ctx._source.count2 = params.count2", "lang": "painless", "params": { "count2": 4 }}}
{ "update": {"_id": "2", "_index": "test", "retry_on_conflict" : 3} }
{ "script": { "source": "ctx._source.count2 = params.count2", "lang": "painless", "params": { "count2": 4 }}}
{ "update": {"_id": "3", "_index": "test", "retry_on_conflict" : 3} }
{ "script": { "source": "ctx._source.count2 = params.count2", "lang": "painless", "params": { "count2": 4 }}}

在我的特定场景中,脚本更加复杂。有没有什么方法可以重用相同的脚本语句?

我故意不使用update_by_query命令,因为它缺少冲突重试机制。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-07 21:05:52

你绝对可以将脚本存储在ES中,并在批量更新中引用它:

首先,存储您的脚本:

代码语言:javascript
复制
POST _scripts/my-script
{
  "script": {
    "lang": "painless",
    "source": "ctx._source.count2 = params.count2"
  }
}

然后,使用它:

代码语言:javascript
复制
POST _bulk
{ "update": {"_id": "1", "_index": "test", "retry_on_conflict" : 3} }
{ "script": { "id": "my-script", "params": { "count2": 4 }}}
{ "update": {"_id": "2", "_index": "test", "retry_on_conflict" : 3} }
{ "script": { "id": "my-script", "params": { "count2": 4 }}}
{ "update": {"_id": "3", "_index": "test", "retry_on_conflict" : 3} }
{ "script": { "id": "my-script", "params": { "count2": 4 }}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63778168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档