我在elasticSearch中遇到以下错误:
[结果窗口太大,+大小必须小于或等于:[10000]但是[100000].
有关请求大型数据集的更有效方法,请参阅scroll api.可以通过更改[index.max_result_window]索引级别参数来设置此限制.]我无法获取我们必须设置的文件
index.max_result_window = 50000;
Run Code Online (Sandbox Code Playgroud)
Chr*_*one 20
您可以在这里找到一些深度分页的官方文档参考.
如果需要更新elasticsearch实例中的最大结果窗口,可以通过这种方式编辑设置
curl -XPUT "http://localhost:9200/my_index/_settings" -d '{ "index" : { "max_result_window" : 500000 } }' -H "Content-Type: application/json"
Run Code Online (Sandbox Code Playgroud)
正如这里已经讨论过的,但要注意深度分页,因为它可能会增加内存使用量并降低elasticsearch的性能.
为了实现更高效的搜索,您应该看看:
是的,增加max_result_window可以解决问题,但 Elastic Search 不推荐此解决方案,因为它可能会增加内存和 CPU 使用率并降低 Elastic Search 实例的性能。
为什么普通ES搜索API的限制是10,000:
默认情况下,offset + limit 限制为 10,000。当以这种方式分页时,Elasticsearch 必须解析查询,构建搜索上下文,将查询分发到适用的分片,整理结果,跳过过去的 $offset 项目,然后读出 $limit 项目并销毁每个页面的搜索上下文意味着我们分页越深,每个页面都比它之前的页面更昂贵。
两个推荐的解决方案可以是:
But If you want to jump freely to a random page, above both is not for you.
从长远来看,您可以通过更新max_result_window设置中的值来解决问题,但从长远来看,这不应该是一个解决方案。
如果你想自由跳转到随机页面:
您可以教育您的用户,他们不需要多次单击分页编号即可转到下一页,他们可以...
您可以通过index.max_result_window = 50000;在etc/elasticsearch中的elasticsearch.yml文件中设置来更改最大结果窗口
| 归档时间: |
|
| 查看次数: |
23383 次 |
| 最近记录: |