我们可以通过 java 从 open distro elasticsearch 中获取超过 10000 条记录吗?
我尝试使用普通的基本 sql 查询:
select id, name from employee order by id desc limit 10, 10;
如果我尝试使用上述查询获取数据,它可以正常工作,但它的范围应该低于 10k。如果我更改限制(从大小),即限制 10000、10,那么它不会返回任何值。
我们可以通过 java 从 open distro elasticsearch 中获取超过 10000 条记录吗?
我尝试使用普通的基本 sql 查询:
select id, name from employee order by id desc limit 10, 10;
如果我尝试使用上述查询获取数据,它可以正常工作,但它的范围应该低于 10k。如果我更改限制(从大小),即限制 10000、10,那么它不会返回任何值。
是的,你可以,控制这个限制的默认值index.max_result_window
是10K,因此你没有得到结果,请阅读官方ES文档中这个设置的描述
搜索到此索引的 from + size 的最大值。默认为 10000。搜索请求占用堆内存和时间与 from + size 成正比,这限制了该内存。请参阅 Scroll 或 Search After 以获得更有效的替代方法来提高它。
当你给 from 和 size 为 10k,10 时,它超过了 from+size of 10k 的限制。但好消息是它是动态设置,无需重启 ES 节点即可更改:
PUT http://{{esHost}}:{{port}}/{{index}}/_settings
{
"index.max_result_window" : 20000
}
检查它是否在索引设置中更新
GET http://{{eshost}}:{{port}}/{{index}}/_settings
{
"64142048": {
"settings": {
"index": {
"number_of_shards": "1",
"provided_name": "64142048",
"max_result_window": "20000", --> note the change
"creation_date": "1601531937379",
"number_of_replicas": "1",
"uuid": "TyEBaknxRJy9NGgma6jOmA",
"version": {
"created": "7080099"
}
}
}
}
}