事实上,ES之所以有这个限制,是因为在分布式环境下深度分页的查询效率会非常低。比如我们现在查询第from=990,size=10这样的条件,这个在业务层就是查询第990页,每页展示10条数据。 但是在ES处理的时候,会分别从每个分片上拿到1000条数据,然后在coordinating的节点上根据查询条件聚合出1000条记录,最后返回其中的10条。所以...
1、限制请求 Es进行限制的10000+的数据.而淘宝则对深度分页处理则很直接,限制分页页数.超过100页后面的数据,基本认为是无效数据.则会丢弃这些数据. 2、scroll: 原理:将排序后的文档id形成快照,保存在内存。官方已经不推荐使用。 使用scroll滚动搜索,一次性查出一部分数据,降低服务器的压力. 第一次查询需要设置超时...
就es的默认配置,假设每页10条记录,也有1000页,如果业务上实在不妥协,则使用第二种方案。 溯源 以上解决方案均是基于max_result_window=10000来进行展开的。那么为什么ES官方会有此参数的限制呢? max_result_window的值可以无限制修改吗?接下来做个简单示例: 场景复现 新建测试库(PUT请求) localhost:9200/chenjun_t...