在Elasticsearch的搜索过程中,我们一直都会有分页查询的需求,那么在Elasticsearch中,主要的分页查询方式一共有4种,分别是:
1、from + size 2、scroll 3、scroll scam 4、search after
下面分别介绍下这四种分页查询的优缺点。
一、from+size
这种方式是我们在日常工作中使用方式最多的,在elasticsearch中也有提供,他的主要特点是:
性能:较低 优点:灵活性好,实现起来非常简单 缺点:深度分页的问题,在elasticsearch中,默认这种方式最多查询前10000条数据。 适用场景:数据量比较小,能容忍深度分页的问题。
二、scroll
这种方式主要是在elasticsearch早期的版本里面使用较多,他依靠scrollId进行查询。他的主要特点是:
性能:中等 优点:解决了深度分页的问题 缺点:需要维护一个scrollId的快照版本,无法反应数据的实时性,可以排序,但是无法跳页查询(也就是无法指定某一页进行查询) 适用场景:查询海量数据
三、scroll scan
这种方式其实和上面的scroll查询是一样的,主要是提升了海量数据的查询性能。他的主要特点是:
性能:中等 优点:相比scroll的方案,进一步提升了海量数据的查询性能。 缺点:无法进行排序,并且需要维护一个scrollid的快照版本,无法反应数据的实时性,并且也无法实现跳页查询。 适用场景:查询海量数据
四、search after
这种方式是目前使用频率较高的查询,也就是主要使用的一种分页查询。他的主要特点是:
性能:高 优点:性能非常好,不存在深度分页的问题,能够反应数据的实时变更。 缺点:实现比较复杂,需要有一个全局唯一的字段。连续分页的实现会比较复杂,因为每一次查询都需要上次查询的结果。由于性能较高,可以实现小范围的跳页查询,大幅度的跳页查询不适用。 适用场景:查询海量数据
还没有评论,来说两句吧...