Roee Gavirel
Roee Gavirel

Reputation: 19453

Are ElasticSearch scripts safe for concurrency issues?

I'm running a process which updates user documents on ElasticSearch. This process can run on multiple instances on different machines. In case 2 instances will try to run a script to update the same document in the same time, can there be a case that some of the data will be lost because of a race-condition? or that the internal script mechanism is safe (using the version property for optimistic locking or any other way)?

The official ES scripts documentation

Upvotes: 1

Views: 803

Answers (1)

Hugodby
Hugodby

Reputation: 1183

Using the version attribute is safe for that kind of jobs.

Do the search with version: true

GET /index/type/_search
{
  "version": true
  your_query...
}

Then for the update, add a version attribute corresponding to the number returned during the search.

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

Upvotes: 1

Related Questions