Elasticsearch 深度分页跳页解决方案 - Scroll API、游标分页、search_after 和 search_before
在 Elasticsearch 中,解决深度分页跳页可以采取以下几种方法:\n\n1. 使用 Scroll API:Scroll API 可以在保持搜索上下文的情况下连续地检索大量数据。使用 Scroll API,首先发送一个初始搜索请求,并设置一个持续时间(例如5分钟)。然后使用 scroll_id 进行后续的滚动请求来检索更多的结果。这样可以避免深度分页跳页的性能问题。\n\n2. 使用游标分页:在 Elasticsearch 7.0 版本之后,scroll API 被淘汰,取而代之的是游标分页(search_after)。游标分页使用 sort 参数来指定排序字段,然后通过 search_after 参数来指定上一页结果的最后一个排序值。这样可以通过将上一页结果的最后一个排序值传递给下一页请求来实现分页查询。\n\n3. 使用 search_after 和 search_before 组合:可以使用 search_after 和 search_before 参数组合来实现更灵活的分页查询。search_after 参数用于指定上一页结果的最后一个排序值,而 search_before 参数用于指定下一页结果的第一个排序值。通过这种方法,可以实现在任意页码进行跳页查询。\n\n4. 使用 from 和 size 参数进行分页:尽管深度分页会对性能产生负面影响,但对于小规模的数据集,可以使用 from 和 size 参数进行分页查询。from 参数指定从第几条记录开始查询,size 参数指定返回结果的数量。但是需要注意,from 参数会导致 Elasticsearch 在查询过程中跳过大量的结果,从而影响性能。\n\n需要根据具体的需求来选择适合的方法,根据数据量和性能要求来权衡使用哪种方法。'}
原文地址: https://www.cveoy.top/t/topic/p4TR 著作权归作者所有。请勿转载和采集!