如果我在ElasticSearch的批量API中有请求1、2、3,我能保证它是按顺序执行的吗,即先执行请求1,然后执行请求2,最后执行请求3?
7gyucuyw1#
This article表示每个子请求都是独立执行的,因此一个子请求的失败不会影响其他子请求的成功。这意味着您不应该依赖于请求的顺序,因为其中一些请求可能根本无法成功完成。但是,响应包含每个子请求的状态,其顺序与子请求的提交顺序相同。还要注意,索引的刷新速度仅为1/sec(默认情况下),因此我希望单个子请求不会看到同一批处理中其他操作的更改。
ivqmmu1c2#
阅读源代码后,我们发现,对于同一文档id上的操作,顺序是可以保证的。因为Elasticsearch服务器会先对批量请求进行排序,并按Shard进行分组。然后,分布式请求将发送到这些Shard。一旦Shard收到Shard批量请求,它将逐个执行请求。
2条答案
按热度按时间7gyucuyw1#
This article表示
每个子请求都是独立执行的,因此一个子请求的失败不会影响其他子请求的成功。
这意味着您不应该依赖于请求的顺序,因为其中一些请求可能根本无法成功完成。
但是,响应包含每个子请求的状态,其顺序与子请求的提交顺序相同。
还要注意,索引的刷新速度仅为1/sec(默认情况下),因此我希望单个子请求不会看到同一批处理中其他操作的更改。
ivqmmu1c2#
阅读源代码后,我们发现,对于同一文档id上的操作,顺序是可以保证的。因为Elasticsearch服务器会先对批量请求进行排序,并按Shard进行分组。然后,分布式请求将发送到这些Shard。一旦Shard收到Shard批量请求,它将逐个执行请求。