elasticsearch如何处理跳过请求(来自/ size参数)

我正在部署一种多次使用参数的方法.我希望了解’skip’在弹性搜索或其他类似系统中的工作原理,以判断它所带来的性能损失. 最佳答案 它取决于
search type.如果您使用默认值,即查询然后获取,然后获取大小为10的页面20(来自:190,大小:10),elasticsearch将:

>向每个主要分片询问前200个文档的ID和相关性分数(从与查询匹配的所有文档中选择,因此这意味着搜索整个索引,但这与仅获取第一页的内容相同)
>合并结果,按相关性排序,并跳过这些合并列表的190个热门点击,然后按照后面的10个
>从相关分片中获取实际文档(即其中10个)

这意味着如果你有例如3个主要副本,然后elasticsearch节点需要交换有关3 * 200 = 600个文档的信息.有一些优化可以使获取特别“远程”页面的效率更高,但简而言之,每次获取下一页时都需要处理越来越多的文档.

如果您的用例涉及按顺序执行结果集,请考虑scrolling.

点赞