ElasticSearch脚本对于并发问题是否安全?

时间:2016-08-02 15:31:16

标签: elasticsearch concurrency

我正在运行一个更新ElasticSearch上的用户文档的流程。此过程可以在不同计算机上的多个实例上运行。如果2个实例将尝试运行脚本以同时更新同一文档,是否会出现某些数据由于竞争条件而丢失的情况?或内部脚本机制是安全的(使用版本属性进行乐观锁定或任何其他方式)?

The official ES scripts documentation

1 个答案:

答案 0 :(得分:1)

对于那种工作,使用version属性是安全的。

使用version: true

进行搜索
GET /index/type/_search
{
  "version": true
  your_query...
}

然后,对于更新,添加与搜索期间返回的数字对应的版本属性。

POST /index/type/the_id_to_update/_update?version=3 // <- returned by the search
{
  "doc":{
    "ok": "name"
  }
}

https://www.elastic.co/guide/en/elasticsearch/guide/current/version-control.html