1

我们可以通过 java 从 open distro elasticsearch 中获取超过 10000 条记录吗?

我尝试使用普通的基本 sql 查询:

select id, name from employee order by id desc limit 10, 10;

如果我尝试使用上述查询获取数据,它可以正常工作,但它的范围应该低于 10k。如果我更改限制(从大小),即限制 10000、10,那么它不会返回任何值。

4

1 回答 1

1

是的,你可以,控制这个限制的默认值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"
                }
            }
        }
    }
}
于 2020-10-01T05:56:57.757 回答