Elasticsearch 分页查询from VS scroll
2018-02-24 19:35
351 查看
由于工作需要,最近用到了ES的scroll 滚动分页查询,再此总结强化一下,如有错误,请多多指教。
Elasticsearch 是一个实时的分布式搜索与分析引擎,被广泛用来做全文搜索、结构化搜索、结果分析。如果搜索的结果比较小时,效率比较不明显,当结果数量是百万级,如果还使用分页检索,效率就会比较差。
分页检索即from-size形式,from指的是从哪里开始拿数据,size是结果集中返回的文档个数。from-size的工作原理是:如size=10&from=100,那么Elasticsearch会从每个分片里取出110条数据,然后汇集到一起再排序,取出101~110序号的文档。并且每次请求,它都会重新排一次序,拿出符合要求的数据。那如果from为50万的时候呢?由此可见,from-size的效率必然不会很高,特别是分页越深,需要排序的数据越多,其效率就越低。
这时就可以使用Scroll。Scroll的工作原理的它先根据条件做一次初始化搜索,把所有符合要求的结果缓存起来形成一个快照,然后持续地、批量地从快照里拉取数据直到没有数据剩下。而这时对索引数据的插入、删除、更新都不会影响遍历结果,因此scroll 并不适合用来做实时搜索。如何搜索类型是Scan,则告诉Elasticsearch不用对结果集进行排序,只要分片里还有结果可以返回,就返回一批结果。scroll- scan使用中不能跳页获取结果,必须一页接着一页获取。
实际返回的数量是size*分片数
Elasticsearch 是一个实时的分布式搜索与分析引擎,被广泛用来做全文搜索、结构化搜索、结果分析。如果搜索的结果比较小时,效率比较不明显,当结果数量是百万级,如果还使用分页检索,效率就会比较差。
分页检索即from-size形式,from指的是从哪里开始拿数据,size是结果集中返回的文档个数。from-size的工作原理是:如size=10&from=100,那么Elasticsearch会从每个分片里取出110条数据,然后汇集到一起再排序,取出101~110序号的文档。并且每次请求,它都会重新排一次序,拿出符合要求的数据。那如果from为50万的时候呢?由此可见,from-size的效率必然不会很高,特别是分页越深,需要排序的数据越多,其效率就越低。
这时就可以使用Scroll。Scroll的工作原理的它先根据条件做一次初始化搜索,把所有符合要求的结果缓存起来形成一个快照,然后持续地、批量地从快照里拉取数据直到没有数据剩下。而这时对索引数据的插入、删除、更新都不会影响遍历结果,因此scroll 并不适合用来做实时搜索。如何搜索类型是Scan,则告诉Elasticsearch不用对结果集进行排序,只要分片里还有结果可以返回,就返回一批结果。scroll- scan使用中不能跳页获取结果,必须一页接着一页获取。
实际返回的数量是size*分片数
相关文章推荐
- Elasticsearch——分页查询From&Size VS scroll
- Elasticsearch——分页查询From&Size VS scroll
- Elasticsearch——分页查询From&Size VS scroll
- Elasticsearch——分页查询From&Size VS scroll
- Elasticsearch——分页查询From&Size VS scroll
- elasticsearch-利用游标查询 'Scroll'来做分页查询
- Elasticsearch使用scroll进行分页查询
- 大数据学习[16]--使用scroll实现Elasticsearch数据遍历和深度分页[转]
- elasticsearch 查询数据 | 分页查询
- elasticsearch-from to size 深度分页的缺陷
- oracle VS mysql 的分页查询
- VS2008下使用Linq To Entity的Skip().Take()分页查询时遇到数据结果不对的问题
- elasticsearch 分页查询实现方案
- from-size VS scroll-scan
- elasticsearch 使用scroll_id查询,为什么每次查询结果相同
- MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适
- elasticsearch 分页 (from+size)(scroll scan) (search after) 详解-->解决深分页 (持续更新)
- 在用hibernate实现oracle 分页查询时报错ORA-00923: FROM keyword not found where expected
- ElasticSearch(9)--使用Java客户端进行分页查询
- ElasticSearch查询—分页查询详解