一、问题描述
在使用 Elasticsearch 进行分页查询的时候,发现超过一定的页数,就会报错,如下:
Result window is too large
二、问题原因
查了一些资料,知道了这个问题是由于 “请求要返回的数据超过了结果窗口的最大值而造成的”。也就是说 Elasticsearch 默认情况下只允许查 10000 条数据,此时要是想请求第 10001 条数据,就会报错。例如:查询结果集总共有 10w 条数据,但是通过 Elasticsearch 的 search 最多只能返回 1w 条数据,剩下的 9w 条数据无法返回。
三、问题解决
我们可以通过修改 index.max_result_window 参数来调整结果窗口的大小(默认是10000),由于我使用的是阿里云的 Elasticsearch 服务,所以,这里我以在阿里云上如何修改 index.max_result_window 参数为例,如下图:
1、打开阿里云 Elasticsearch 服务对应的 Kibana
2、点击左侧导航 Management
3、点击 Index Management
4、点击 要修改的 index
5、点击 Edit settings
6、在编辑框内的 JSON 数据中添加 “index.max_result_window”: “10000000”
7、点击【完成】保存