首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch:按查询更新:如何处理版本冲突?

Elasticsearch:按查询更新:如何处理版本冲突?
EN

Stack Overflow用户
提问于 2017-08-15 07:09:33
回答 1查看 1.2K关注 0票数 4

当其他守护进程(可能)也在更新文档时,我希望通过对弹性查询来执行更新。其后果是版本冲突。

我希望获得所有(不仅仅是一个大容量)冲突文档I的列表(用于手动重试),或者设置retry_on_conflict以便通过查询进行更新。

我该怎么做呢?

我的查询示例:

代码语言:javascript
复制
    "script": {
        "inline": "ctx._source['msp']=null",
        "lang": "painless"
    },
    "query": {
        "bool": {
            "must_not": {
                "terms": {
                    "msp-rev": [44]
                }
            },
            "must" : {
                "exists": {
                    "field": "msp"
                }
            }
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2022-07-08 14:21:21

Tldr;

update_by_queryconflicts=proceed结合使用。这不会中止您的更新。在响应中,您将有一个数组failures,其中所有失败的id都是。

代码语言:javascript
复制
POST /<index>/_update_by_query?conflicts=proceed
{
  "script": {
    "inline": "ctx._source['msp']=null",
    "lang": "painless"
  },
  "query": {
    "bool": {
        "must_not": {
            "terms": {
                "msp-rev": [44]
            }
        },
        "must" : {
            "exists": {
                "field": "msp"
            }
        }
    }
  }
}

手动使用更新查询逐个更新文档。

代码语言:javascript
复制
POST /<index>/_update/<_id>?retry_on_conflict=<some value>
{
  "doc": {
    "msp": null
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45688007

复制
相关文章

相似问题

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