ES分页
ES分页查询指定页时,需要从头查起,即需要查询出前置页 + 当前页的数据,然后返回当前页的数据。以操作文件举例,例如要取文件的第41行到50行,需要执行head -n 50 file | tail -n 10。所以使用from…size进行深分页查询时必然会消耗性能。
一、from…size的限制
1)分页查询语法
1 | GET /_search |
2)from…size的限制
Note that
from+sizecan not be more than theindex.max_result_windowindex setting which defaults to 10,000.
官网上说,通过from+size去查询时,页数越深其消耗的堆内存和时间越长。
二、深分页
适合实时深分页查询,利用上次结果帮助去索引下一页。
2)Scroll
适合非实时的深分页查询,其会进行指定时间的缓存。
三、深分页是否必须
从官网的信息来看,深分页似乎不支持跳页,只能执行下一页。而在大部分深分页的场景下,如日志查询,用户其实并不会去翻页。
所以,有些深分页的需求是伪需求,可以转换为增加条件转换为非深分页。