ES深度分页问题解决方案

简介: ES深度分页问题

假设当前有一个场景需要查询10010 ~ 10015的学生。


不同于单机数据库只需要select * from order 然后再limit一下就行


ES的集群环境下,因为分片分配策略的原因,分片肯定是分配在多个不同节点下的,我们会从多个节点下把那些分片里的所有数据都拿出来,假设一共有5W条数据,我们全拿出来,然后进行排序,再取其中10010 ~ 10015的学生,进行返回,这就是深度分页的问题。


这个问题出现的原因是你需要查询出内存中的所有分片数据,在内存中进行一个分页,这个对内存的损耗是很大的,严重时,频繁的分页还会导致FULL GC的出现,所以ES默认也设置了10000的阈值,来防止用户不了解底层原理使得深度分页情况的发生。


我们需要尽量尝试避免深度分页的出现

可以在产品层面上进行规避

比如淘宝的解决手段 只返回100页,每页100条记录,刚好卡在ElasticSearch的最大阈值上.

目录
相关文章
|
3月前
|
缓存 UED 开发者
全面加速Angular应用:从代码拆分到服务器端渲染的性能优化全攻略——深入探讨提升加载速度的有效策略
【8月更文挑战第31天】在现代Web开发中,提升应用加载速度对增强用户体验至关重要,尤其对于使用Angular框架的单页应用而言更是如此。本文通过解答五个常见问题,提供了一份全面的Angular性能优化攻略,涵盖减少初始加载时间、处理大型第三方库、优化变更检测、利用缓存以及服务器端渲染等技术。通过这些方法,开发者能够显著提升应用性能,确保流畅高效的用户体验。
49 0
|
前端开发
前端学习笔记202306学习笔记第四十二天-ES10增加的新特性1
前端学习笔记202306学习笔记第四十二天-ES10增加的新特性1
47 0
|
存储 索引
ES 分布式搜索的运行机制
ES 分布式搜索的运行机制
48 1
ES 分布式搜索的运行机制
|
6月前
|
前端开发
【前端学习】—ES6新增的方法有哪些(十五)
【前端学习】—ES6新增的方法有哪些(十五)
|
前端开发
前端学习笔记202306学习笔记第四十二天-ES10增加的新特性2
前端学习笔记202306学习笔记第四十二天-ES10增加的新特性2
50 1
|
前端开发
前端学习笔记202306学习笔记第四十二天-Es7-ES7新增特性
前端学习笔记202306学习笔记第四十二天-Es7-ES7新增特性
55 0
|
前端开发
前端学习笔记202306学习笔记第四十二天-ES12新增的特性2
前端学习笔记202306学习笔记第四十二天-ES12新增的特性2
36 0
|
前端开发
前端学习笔记202306学习笔记第四十二天-ES12新增的特性1
前端学习笔记202306学习笔记第四十二天-ES12新增的特性1
44 0
|
前端开发
前端学习笔记202306学习笔记第四十二天-ES10新增的特性2
前端学习笔记202306学习笔记第四十二天-ES10新增的特性2
45 0
|
前端开发
前端学习笔记202306学习笔记第四十二天-ES10新增的特性1
前端学习笔记202306学习笔记第四十二天-ES10新增的特性1
46 0