我的ES索引包含以下格式的文件:
REQUEST:
GET /users/_doc/1
RESPONSE:
{
"name": "Foo",
"num_followers": 123456,
"num_photos": 123456
}
说我有两个进程可以几乎同时更新同一文档:
REQUEST 1:
POST /users/_doc/1/_update
{
"script": {
"source": "ctx._source.name = 'Bar'"
}
}
REQUEST 2:
POST /users/_doc/1/_update
{
"script": {
"source": "ctx._source.num_followers = 0"
}
}
其中一个请求将首先到达群集。 ES如何处理第二个到达的请求?是否有一些内部队列/时间戳逻辑来确保所有更新顺序修改文档,并且不会丢失任何请求?
此外,我是否可以通过实施某种批处理逻辑来受益,该逻辑可以处理我端的请求排序并向ES发出一个更新调用,或者这是不必要的吗?