滚动API以更有效地请求大型数据集

时间:2017-06-27 19:21:48

标签: elasticsearch elasticsearch-plugin

我正在使用弹性搜索数据格式插件,我的要求是请求大量数据集近100万条记录。但每当我要求超过10 000时,我得到的错误如下:

  

结果窗口太大,+大小必须小于或等于:   [10000]但是[100000]。请参阅scroll api以获得更有效的方法   请求大型数据集。可以通过更改来设置此限制   [index.max_result_window]索引级别设置。“

我尝试将默认页面分配更改为:

http://1.2.3.4:9200/index/_settings -d '{ "index" : { "max_result_window" : 1000000}}'

但事情对我不起作用。还有其他替代品吗?

我正在使用Elastic Search 5.4 数据格式插件为主

1 个答案:

答案 0 :(得分:0)

正如错误消息中所建议的,使用scroll api是检索大型数据集的有效方法。例如,

POST <host_name>:<port_num>/<index_name>/_search?scroll=1m&size=100000

如上图所示,大小提到100000,滚动是1m,这意味着滚动api将每次点击检索100000条记录,此滚动条目可用1分钟。此外,此api返回一个滚动ID,应该用于进一步检索记录。请找到以下示例:

POST <host_name>:<port_num>/_search?scroll=1m&scroll_id=<scroll_id>

注意:进一步滚动api调用,不需要提及索引名称。只有scroll_id和滚动时间就足够了。

有关详细信息,请参阅scroll api:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html

上的弹性搜索文档