推荐使用第一种解决方案,因为es的优势在于搜索,不在于分页,对此做限制就是为不影响其性。就es的默认配置,假设每页10条记录,也有1000页,如果业务上实在不妥协,则使用第二种方案。 溯源 以上解决方案均是基于max_result_window=10000来进行展开的。那么为什么ES官方会有此参数的限制呢? max_result_window的值可以无...
事实上,ES之所以有这个限制,是因为在分布式环境下深度分页的查询效率会非常低。比如我们现在查询第from=990,size=10这样的条件,这个在业务层就是查询第990页,每页展示10条数据。 但是在ES处理的时候,会分别从每个分片上拿到1000条数据,然后在coordinating的节点上根据查询条件聚合出1000条记录,最后返回其中的10条。所以...
1、限制请求 Es进行限制的10000+的数据.而淘宝则对深度分页处理则很直接,限制分页页数.超过100页后面的数据,基本认为是无效数据.则会丢弃这些数据. 2、scroll: 原理:将排序后的文档id形成快照,保存在内存。官方已经不推荐使用。 使用scroll滚动搜索,一次性查出一部分数据,降低服务器的压力. 第一次查询需要设置超时...
针对对每次分页查询请求,我都会创建游标,接着手动滚动到包含请求数据的那一屏,最后取出请求页面中的目标数据。 比如现在准备查询第1413页,页面容量为10条数据,游标每次移动1000条记录,总记录数为1000000(这个值不重要了)。如果以1作为第一条数据的下标,则有以下规律: 第1413页的第一条数据的下标=(1413-1)*10+1...
一、from-size(深分页)1、分页原理假设有8分片,查询到第1000页数据,from =1000 size=100,es每次会从取出每个分片取1000*100+100=11w条数据,自然每个分片都会存储这11w条数据,然后再发给协调节点做排序后,而协调节点就是面临处理8*11w=88w条的巨大压力随着from页码的不断增加,es从每个分片获取的数据量也就越来...
推荐使用第一种解决方案,因为es的优势在于搜索,不在于分页,对此做限制就是为不影响其性。就es的默认配置,假设每页10条记录,也有1000页,如果业务上实在不妥协,则使用第二种方案。 溯源 以上解决方案均是基于max_result_window=10000来进行展开的。那么为什么ES官方会有此参数的限制呢? max_result_window的值可以无...