理解深度分页
1. 深度分页1.1 请求第9990~10000条之间的10条数据成功请求,没有报错1.2请求9999~10009之间的10条数据报错如下,es指出请求的最大数据不能超过10000,但是我们数据达到了10009。请往下看这是由于es拉取数据是这么拉取的:1.3 深度分页:从每个shard中拉取总数10009条,最后在汇总成30027条数据,再对30027条数据进行排序,然后,再从30027条数据中
1. 深度分页
1.1 请求第9990~10000条之间的10条数据
成功请求,没有报错
1.2 请求9999~10009之间的10条数据
报错如下,es指出请求的最大数据不能超过10000,但是我们数据达到了10009。请往下看
这是由于es拉取数据是这么拉取的:
1.3 深度分页:
从每个shard中拉取总数10009条,最后在汇总成30027条数据,再对30027条数据进行排序,然后,再从30027条数据中取出9999-10009之间的10条数据(分页),返回给用户。最后再抛弃30027条数据。这样的话,性能就会有很大的损耗。
那么,es就做了限制,查询数据不能超过10000条,否则对性能就有很大的影响。
1.4 淘宝是怎么解决深度分页带来的问题的?
淘宝做了限制,只能分页到100页。
2. 提升搜索量
由于有查询更多条数据的需求,所以可以通过提升搜索量的方法,来满足查询更多数据的需求。
我们在搜索9999~10009之间的数据时,报错提示,可以修改index.max_result_window的值,以提升搜索量。
设置index.max_result_window为100000
查看设置:
验证:
查询89999~90009之间的数据,成功响应
查询99999~100009之间的数据,返回错误
原因是超过了设置的100000的限制。
更多推荐
所有评论(0)