ES深度分页问题解决方案

简介: ES深度分页问题

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


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


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


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


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

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

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

目录
打赏
0
0
0
0
4
分享
相关文章
百度搜索:蓝易云【Java垃圾回收机制详解及性能优化详解。】
Java的垃圾回收机制自动管理内存,使开发人员不必手动处理内存释放的问题。通过了解垃圾回收算法、垃圾回收器的选择和性能优化的技巧,可以提高应用程序的性能和响应速度。但在进行性能优化时,需要根据具体的应用场景和需求进行评估和调整,以找到最佳的配置和优化策略。
171 0
|
8月前
|
面试题ES问题之使用分词器提高写入效率如何解决
面试题ES问题之使用分词器提高写入效率如何解决
72 1
大量数据如何做分页处理
【8月更文挑战第13天】面对大量数据分页,可从数据库与应用两方面着手:数据库端利用内置分页功能如MySQL的`LIMIT`与`OFFSET`,及SQL Server的`ROW_NUMBER()`;优化查询,精选字段并为常用排序字段加索引。应用端采用缓存已分页数据、异步加载新页及前端懒加载技术。同时限制最大页数并持续监控优化性能,确保高效查询与良好用户体验。
233 0
Elasticsearch中的三种分页策略深度解析:原理、使用及对比
Elasticsearch中的三种分页策略深度解析:原理、使用及对比
【前端学习】—ES6新增的方法有哪些(十五)
【前端学习】—ES6新增的方法有哪些(十五)
基于Solr实现排序定制化参考
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。 本文Solr实现排序定制化的实践参考。排序实现有N种形式,最低成本、最快响应时间是目标。 一份索引,支持N种排序策略并且在线互不干扰是要考虑的。每一种实现,处理的场景是不同的,不要千篇一律。020排序,从索引到效果,有不少坑,这篇文章没有细说,原因是有些内容不好公开。
348 0
【ES6】对象相关拓展
【ES6】对象相关拓展
54 0
白话Elasticsearch08-深度探秘搜索技术之基于boost的细粒度搜索条件权重控制
白话Elasticsearch08-深度探秘搜索技术之基于boost的细粒度搜索条件权重控制
179 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等