Elasticsearch 自动切片有什么作用?



Elasticsearch 自动切片有什么作用?我发现文档对此功能非常简洁。我尝试搜索此功能的其他解释,但无济于事。我也没有设法在 Elasticsearch 中找到什么切片。

自动切片是一种并行化几个不同终结点工作的方法,例如重新索引、按查询更新和按查询删除。

上述三个 API 的工作方式都相同,即对目标索引进行滚动查询。滚动查询提供了一种性能更高的方法来使查询产生比普通分页查询更大的结果集。滚动查询可以通过切片来进一步改进。

显然,如果查询应该返回大量命中,则可以使用from/size进行普通查询并浏览结果,但由于深分页,这不会是高性能的。为了规避该问题,ES 允许您使用滚动查询来获取 N 次命中的结果。这些滚动查询可以通过切片来进一步改进,即将滚动拆分为多个切片,客户端应用程序可以独立使用这些切片。

因此,假设您有一个应该返回 1,000,000 次命中的查询,并且您想使用普通滚动查询(即不切片)以 50,000 次命中为批次滚动该结果集,您的客户端应用程序将不得不进行第一次滚动调用,然后进行 20 次同步调用(即一个接一个)来检索每批 50K 命中。

通过使用切片,您可以并行化 20 个滚动调用。如果您的客户端应用程序是多线程的,则可以使每个滚动调用使用 5 个(例如)切片,因此,您最终将获得 5 个 ~10K 命中切片,这些切片可由应用程序中的 5 个不同线程使用,而不是让单个线程使用 50K 次命中。因此,您可以利用客户端应用程序的全部计算能力来使用这些命中。

理想的切片数应该是源索引中分片数的倍数。为了获得最佳性能,应选择与源索引中的分片数相同的切片数。因此,您可能希望使用自动切片而不是手动切片,因为 ES 会为您选择该数字。

相关内容

最新更新