讲师中心 微信公众号
AI工具推荐 视频效率加速

Laravel ES分页查询优化大数据加载效率

胖涛小哥_4677

胖涛小哥_4677

发布时间:2026-08-16 17:12:38

|

485人浏览过

|

来源于php中文网

原创

Laravel + ES 深度分页卡死的根本原因是 from/size 在 ES 中需跳过大量已排序文档,导致内存与 GC 压力剧增;应改用 search_after 实现游标分页或 scroll 用于导出,禁用调大 max_result_window。

laravel es分页查询优化大数据加载效率

为什么 Laravel + ES 的 from/size 分页在大数据下会卡死?

不是 Laravel 慢,也不是 ES 配置错,而是 from + size 在 ES 侧根本就扛不住深度分页。当你在 Laravel 中写 ->paginate(100) 并传给 ES 查询时,底层实际构造的是 {"from": 9900, "size": 100} —— 这意味着 ES 要在所有匹配文档中排序后跳过前 9900 条,再取 100 条。6 亿条命中数据下,这个操作要合并、重排、丢弃大量中间结果,协调节点内存和 GC 压力飙升,10 分钟响应都算乐观。

Laravel 中如何安全切换到 search_after?

search_after 是唯一能兼顾实时性与性能的替代方案,但它不能直接套用 Laravel 的 paginate()。你必须手动管理游标:

  • 每次查询返回结果时,提取排序字段值(如 timestamp_uuid_),拼成数组: ["1744214400000", "abc123"]
  • 下一页请求时,把该数组塞进 search_after 参数,同时确保 sort 字段顺序、类型、missing 策略完全一致
  • Laravel 控制器里不要依赖 $request->page,改用 $request->cursor 接收 Base64 编码的游标(避免 URL 中出现特殊字符)
  • 注意:search_after 不支持倒序翻页(比如从最后一页跳第 3 页),只能单向“下一页”

scroll 不适合 Web 分页,但导出场景可直接用

如果你的“分页”其实是后台导出全量数据(比如报表 CSV),别硬套分页逻辑,直接上 scroll

Laravel
Laravel

避免常见的Laravel错误:N+1查询、批量赋值、缓存陷阱及队列序列化陷阱。

下载
  • 第一次请求加 "scroll": "2m",拿到 _scroll_id
  • 后续用 GET /_search/scroll + _scroll_id 持续拉取,每次返回一批(size 可设为 1000 或更高)
  • Laravel 中用 while 循环 + yield 流式写入文件,避免内存爆掉
  • 切记:scroll 是快照查询,期间新写入的数据不会被包含;且 _scroll_id 两分钟不用就失效,不适合用户交互式翻页

max_result_window 调大是饮鸩止渴

看到 Result window is too large 就去改 index.max_result_window?危险操作:

  • 调到 50000 甚至 100000,ES 仍可能 OOM——因为每个分片都要缓存 from + size 条排序结果
  • 集群负载不均时,某个分片扛不住,整条查询失败
  • 一旦业务增长,问题只会更早复现,而不是消失
  • 真正该做的,是在 Laravel 层拦截超限请求:比如 if ($from > 10000) { throw new BadRequestHttpException('超出最大页码'); }

深度分页从来不是“能不能查出来”的问题,而是“该不该这么查”的设计判断。游标分页(search_after)和滚动遍历(scroll)不是备选方案,是大数据量下唯一合理的路径。漏掉排序字段唯一性约束、忽略 missing 处理差异、或在游标里混用不同类型的值——这些细节才是线上查不出数据的真正元凶。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

相关专题

更多
大数据分析工具有哪四个
大数据分析工具有哪四个

大数据分析的四个工具分别是rapidminer、Hpcc、Hadoop和Pentaho bi。大数据分析用于从各种来源生成的原始数据中提取有价值的数据。这些数据帮助我们获得有意义的见解、隐藏的模式、未知的相关性、市场趋势等等,具体取决于行业。大数据分析的主要动机是提供有价值的见解,以便为未来做出更好的决策。php中文网为大家带来了大数据分析的相关教程、以及相关文章等内容,供大家免费下载使用。

3996

2023.06.21

Java 大数据处理基础(Hadoop 方向)
Java 大数据处理基础(Hadoop 方向)

本专题聚焦 Java 在大数据离线处理场景中的核心应用,系统讲解 Hadoop 生态的基本原理、HDFS 文件系统操作、MapReduce 编程模型、作业优化策略以及常见数据处理流程。通过实际示例(如日志分析、批处理任务),帮助学习者掌握使用 Java 构建高效大数据处理程序的完整方法。

1209

2025.12.08

大数据专业学习教程
大数据专业学习教程

本专题整合了大数据专业学习相关教程,阅读专题下面的文章了解更多详细内容。

203

2026.01.05

python处理大数据合集
python处理大数据合集

本专题整合了python处理大数据相关教程,阅读专题下面的文章了解更多详细内容。

426

2026.01.05

laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

817

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

795

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2348

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3261

2024.04.10

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

0

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 179人学习

Composer手册
Composer手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn