使用es存储查询时有分页功能,数据量较少时并没有发现该问题。但是当数据量比较大时,要查询第101页的数据,每页数据量为100,100页数据相当于要查第10000条以后的数据,这时发现es查询报错:
Result window is too large, from + size must be less than or equal to: [10000] but was [10025].
See the scroll api for a more efficient way to request large data sets.
This limit can be set by changing the [index.max_result_window] index level parameter.
从字面理解,es的默认的结果集窗口是10000,但是你要查询到10025条数据;这里可以采用es的scroll api查询;或者通过改变索引的max_result_window的属性值。
上述的scroll api返回结果集为非排序的,不满足业务需求,所以不采用。
采用修改索引的max_result_window属性值。
修改方法如下:
PUT your_index/_settings
{
"index":{
"max_result_window":1000000
}
}
返回结果:
{
"acknowledged": true
}
然后再进行查询,发现可以正常返回了。