【问题标题】:update by query performance in ElasticSearch通过 ElasticSearch 中的查询性能进行更新
【发布时间】:2017-11-06 22:49:56
【问题描述】:

我是 ElasticSearch 的新手。我正在尝试使用以下内联脚本更新所有记录。

ES 版本:5.1.1
发布http://localhost:9200/index_1,index_2/type/_update_by_query?ignore_unavailable=true

{
    "script": {
        "inline": "if(ctx._source.containsKey(\"status\")){ctx._source.status.name = 'UPDATED_STATUS_NAME';ctx._source.status.value = 'UPDATED_STATUS_VALUE';ctx._source.status.name = 'UPDATED_STATUS_NAME';ctx._source.status.value = 'UPDATED_STATUS_VALUE';}"
    }
}

现在考虑以下场景:

1] 我们在 ES 上通过查询点击更新

2] 第 1 步正在进行中,我们收到另一个更新请求

3] 我们再次在 ES 上通过查询更新

4] 现在有 2 个更新查询正在进行中

我想知道 ElasticSearch 在这种情况下会如何表现

1]会有冲突吗?

2] ES 将关闭,因为我们通过查询对数千个文档进行两次更新,或者可能是用户想要执行更新操作的次数 或以上操作有任何风险

问候,
桑迪普

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    文档版本冲突时更新。

    处理取决于查询参数包含 (?conflicts=proceed?)

    1 已通过 将转义版本冲突的文档其余部分将得到更新。

    2 未通过然后更新文档,直到版本冲突和操作中止。

    注意:在这两种情况下,更新的文档都不会像 RDBS 那样回滚

    【讨论】:

      猜你喜欢
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2022-07-02
      • 2017-01-02
      • 2017-08-18
      • 2014-10-21
      • 1970-01-01
      • 2021-03-18
      相关资源
      最近更新 更多