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则适用于一次性获取大量数据并允许数据稍有延迟的场景。

相关推荐

  1. ES各种方式及其优缺点对比

    2024-06-08 14:28:05       8 阅读
  2. ES问题

    2024-06-08 14:28:05       30 阅读
  3. 各种优化器及其优缺点(SGD,RMSProp,Adam及其变种)

    2024-06-08 14:28:05       15 阅读
  4. 前端响应式布局方式及其优缺点大全

    2024-06-08 14:28:05       15 阅读
  5. SpringBoot 整合ES实现查询和滚动查询

    2024-06-08 14:28:05       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 14:28:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 14:28:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 14:28:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 14:28:05       18 阅读

热门阅读

  1. 【求助】ansible synchronize 问题

    2024-06-08 14:28:05       9 阅读
  2. php翻车集锦

    2024-06-08 14:28:05       5 阅读
  3. windows php8.1 安装imagick识别不到扩展

    2024-06-08 14:28:05       6 阅读
  4. 如何进行单元测试以及使用过的测试框架

    2024-06-08 14:28:05       7 阅读
  5. 后端 excel的导入

    2024-06-08 14:28:05       9 阅读