Elasticsearch automatic slicing做了什么?我发现文档对这个函数非常简洁。我试图寻找这个功能的其他解释,但无济于事。我都没有设法找到Elasticsearch中的切片。
答案 0 :(得分:10)
自动切片是一种并行化几个不同端点的工作的方法,例如reindex,update by query和delete by query。
通过在目标索引上创建scroll query,上述三个API的工作方式相同。滚动查询提供了一种更高效的方法,使查询产生比正常分页查询更大的结果集。 slicing them可以进一步改进滚动查询。
很明显,如果查询应该返回大量点击,您可以使用from
/ size
进行常规查询和翻页结果,但这样做不会有效deep-paging。为了避免这个问题,ES允许您使用滚动查询以获得N次点击的批量结果。这些滚动查询可以通过切片来进一步改进,即将滚动分成多个切片,可以由客户端应用程序独立使用。
所以,假设您有一个应该返回1,000,000次点击的查询,并且您希望使用普通的滚动查询(即没有切片)以50,000次点击的方式滚动该结果集,您的客户端应用程序将不得不进行第一次滚动调用,然后再进行20次同步调用(即一个接一个),以检索每批50K命中。
通过使用切片,您可以并行化20个滚动调用。如果您的客户端应用程序是多线程的,您可以使每个滚动调用使用5个(例如)切片,因此,您最终会得到5个~10K的命中,这些命中可以被应用程序中的5个不同线程使用而不是让一个线程消耗50K命中。因此,您可以利用客户端应用程序的全部计算能力来消耗这些命中。
理想的切片数应该是源索引中碎片数量的倍数。为获得最佳性能,您应该选择与源索引中的分片数相同的切片数。因此,您可能希望使用自动切片而不是手动切片,因为ES会为您选择该数字。