ES各种分页方式及其优缺点对比

ES各种分页方式及其优缺点对比

Elasticsearch (ES) 提供了几种不同的分页方法来帮助用户有效地从大量数据中检索部分结果。以下是几种常见的分页方式及其优缺点对比:

1. From/Size 分页(浅分页)

说明: 这是最直接也是ES默认的分页方式,通过fromsize参数实现。from指定起始文档的位置,size指定每次返回的结果数量。

优点:

  • 使用简便,符合SQL查询习惯。
  • 支持非连续分页,可以直接跳转到任意页码。
  • 数据实时更新,每次请求都反映最新数据状态。

缺点:

  • 深度分页性能差,因为from值越大,ES需要遍历和丢弃的文档越多,特别是当from值接近或超过index.max_result_window配置时(默认10000)。
  • 占用内存,尤其是在处理大量数据集时,可能导致内存溢出。

2. Scroll 分页

说明: 适用于大量数据的深度分页,通过一次初始化请求(打开一个Scroll上下文)来保持对搜索结果集的引用,然后通过多次滚动请求(使用Scroll ID)来获取结果集的不同片段。

优点:

  • 对深度分页友好,性能稳定,不会随着分页深度增加而显著下降。
  • 可以处理大量数据而不受index.max_result_window限制。

缺点:

  • 不实时,Scroll上下文维护的搜索结果可能不会反映实时数据变化。
  • Scroll ID有生存周期限制,过期后需要重新初始化。
  • 不适合频繁跳转页码查询。

3. Search After 分页

说明: 通过在前一次搜索结果中获取最后一个文档的排序值作为下一次搜索的起点,实现高效的连续分页。

优点:

  • 高效,尤其是对于深度分页,因为它避免了从头开始搜索。
  • 实时性较好,每次请求都是基于最新的数据。
  • 不受index.max_result_window限制。

缺点:

  • 必须有明确且稳定的排序字段。
  • 不支持随机跳页,只能顺序地一页一页获取。
  • 首次查询仍然需要确定大小,如果大小设置不当,可能影响性能。

总结

选择哪种分页方式取决于具体需求:

  • 如果是简单的分页需求,且数据量不大,From/Size分页足够使用。
  • 对于深度分页或者大数据量的分页查询,推荐使用Scroll或Search After方法,其中Search After更适合需要实时性和连续页码查询的场景,而Scroll则适用于一次性获取大量数据并允许数据稍有延迟的场景。
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ThinkPet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值