只有当我试图追加插入的文档中某个特定字段(索引(的值大于当前字段的值时,才应进行追加插入。这必须在单个原子事务中完成,因为有并发的lambda将要执行此操作。也就是说,我不能先查询,然后再追加第二个以自己处理条件,因为在操作之间,数据可能已经变脏了。
基于少量的阅读,我们可以使用脚本来完成这项工作,但这似乎是一项成本高昂的操作。
POST <<endpoint>>
{
"scripted_upsert":true,
"script": {
"lang": "painless",
"inline" : "if //some_condition//",
"params": {
//params
}
}
}
有更好的方法吗?
如果您使用批量进行追加,当您的客户端收到响应时,它应该检查项目数组,并确保每个项目的状态都是200(更新(或201(创建(。如果是这样的话;交易";已正确提交,如果未正确提交,则状态为200或201的所有内容都已提交,否则提交失败。我们也知道弹性没有回滚或提交功能