elasticsearch - 滚动api以更有效的方式请求大数据集

标签 elasticsearch elasticsearch-plugin

我正在使用Elastic Search数据格式插件,我的要求是请求一个大型数据集,该记录集将近100万条记录。但是,每当我要求高于10 000时,我都会得到如下错误:

Result window is too large, from + size must be less than or equal to: [10000] but was [100000]. 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 setting."



我试图将默认页面分配更改为:
http://1.2.3.4:9200/index/_settings -d '{ "index" : { "max_result_window" : 1000000}}'

但是事情对我不起作用。还有其他选择吗?

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

最佳答案

如错误消息中所建议,使用滚动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和滚动时间就足够了。

有关更多信息,请参阅滚动api上的 flex 搜索文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html

关于elasticsearch - 滚动api以更有效的方式请求大数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44788244/

相关文章:

elasticsearch - ElasticsearchIllegalArgumentException:插件名称非法

python - 获取索引elasticsearch python中的所有字段名称

elasticsearch - 排除具有不同字段的重要术语聚合

elasticsearch - Elasticsearch:安全问题

java - 喜欢 Elasticsearch 中的搜索

elasticsearch - 如何限制 Elasticsearch 集群上的索引创建/删除?

java - 如何修复 URI 未在 ClientProtocolException : 中指定有效的主机名

javascript - Promise 解析后在 'then' 中发送响应

elasticsearch - 将术语查询与Or运算符配合使用

windows - Windows的Elasticsearch插件的脱机安装