В ES нет транзакций и никогда не будет согласно внутренним источникам.
Лучший способ добиться того, чего вы хотите, - это сделать ваши обновления массовыми , а затем проверить ответы каждого отдельного ответа.
POST _bulk
{"index": {"_index": "my_index", "_type": "user", "_id": "1"}}
{ "name": "John Smith", "email": "john@smith.com", "dob": "1970/10/24" }
{"index": {"_index": "my_index", "_type": "blogpost", "_id": "2"}}
{ "title": "Relationships", "body": "It's complicated...", "user": { "id": 1, "name": "John Smith" }}
Когда ваш клиент получает ответы, он должен проверить массив items
и убедиться, что каждый элемент status
равен 200 (обновлен) или 201 (создан). Если это так, то ваша массовая «транзакция» была правильно зафиксирована, если нет, то все со статусом 200 или 201 было зафиксировано, иначе фиксация не удалась.