当前位置: 首页 > news >正文

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

相关文章:

  • Python实现登录到远程主机,然后在远程主机上继续连接远程主机
  • [Windows] 植物大战僵尸杂交版
  • View->Bitmap缩放到自定义ViewGroup的任意区域(Matrix方式绘制Bitmap)
  • 【多目标跟踪】《FlowMOT: 3D Multi-Object Tracking by Scene Flow Association》论文阅读笔记
  • FFmpeg 中 Filters 使用文档介绍
  • 运维开发详解:现代IT环境的核心角色
  • 【TB作品】msp430g2553单片机,秒表,LCD1602,Proteus仿真
  • 使用dockerfile快速构建一个带ssh的docker镜像
  • AI程序员来了,大批码农要失业
  • 树--搜索二叉树
  • 大一C语言课设 服装销售系统 代码实现与项目总结
  • 深入探讨分布式ID生成方案
  • ES脚本启动报错修改
  • 新能源汽车推行精益生产:绿色动力下的效率革命
  • Java常规题技术分享
  • 单实例11.2.0.4迁移到11.2.0.4RAC_使用rman异机恢复
  • 新手教程之使用LLaMa-Factory微调LLaMa3
  • 【MATLAB】概述1
  • 富格林:揭露黑幕平台保障安全
  • C++ 混合运算的类型转换
  • 水利部:山西、陕西等地旱情将持续
  • 泉州一家婚介机构广告牌越南新娘七天闪婚领证?市监部门介入
  • 上海一中院一审公开开庭审理被告人胡欣受贿案
  • 个人住房公积金贷款利率下调,100万元30年期贷款总利息将减少近5万元
  • 李云泽:房地产“白名单”贷款审批通过金额增至6.7万亿元
  • 苹果用户,安卓来“偷心”