elasticsearch ElasticSearch脚本对于并发问题是否安全?,elasticsearch,concurrency,elasticsearch,Concurrency" /> elasticsearch ElasticSearch脚本对于并发问题是否安全?,elasticsearch,concurrency,elasticsearch,Concurrency" />

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

elasticsearch ElasticSearch脚本对于并发问题是否安全?,elasticsearch,concurrency,elasticsearch,Concurrency,我正在运行一个进程,更新ElasticSearch上的用户文档。此进程可以在不同计算机上的多个实例上运行。在案例2中,实例将尝试运行一个脚本来同时更新同一文档,是否会因为竞争条件而丢失某些数据?或者内部脚本机制是安全的(使用version属性进行乐观锁定或任何其他方式) 对于此类作业,使用版本属性是安全的 使用version:true进行搜索 GET /index/type/_search { "version": true your_query... } 然后,对于更新,添加与搜索期

我正在运行一个进程,更新ElasticSearch上的用户文档。此进程可以在不同计算机上的多个实例上运行。在案例2中,实例将尝试运行一个脚本来同时更新同一文档,是否会因为竞争条件而丢失某些数据?或者内部脚本机制是安全的(使用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"
  }
}

POST/index/type/the\u id\u to\u update/\u update?version=3//这就是我们一直在做的事情。这里的问题是,它需要两次往返ES集群。我遇到了ES脚本(),它允许我们发送一个脚本,定义我们希望在一次往返中进行的更改,并减少网络。问题是,在使用这些脚本时,我没有发现任何关于版本控制的信息。