我们从 Elasticsearch 2.1检索信息,并允许用户浏览结果。当用户请求一个较高的页码时,我们会得到以下错误消息:
结果窗口太大,from + size 必须小于或等于 To: [10000]但是是[10020]。请参阅卷轴 api 以获得更有效的 请求大型数据集的方法。这个限制可以通过更改 [ index.max _ result _ window ]索引级别参数
橡皮图书说,这是因为高内存消耗和使用滚动 api:
值大于每个 搜索和每个碎片执行搜索。最安全的做法是留下这个 值,因为它是一个用于任何深度滚动的卷轴 api < a href = “ https://www.elastic.co/guide/en/elasticsearch/reference/2.x/break _ 21 _ search _ changes.html # _ from _ size _ limit”> https://www.elastic.co/guide/en/elasticsearch/reference/2.x/breaking_21_search_changes.html#_from_size_limits
问题是,我不想检索大型数据集。我只想从结果集中位置非常高的数据集中检索一个片段。滚动文档还显示:
滚动不适用于实时用户请求 https://www.elastic.co/guide/en/elasticsearch/reference/2.2/search-request-scroll.html
这给我留下了一些问题:
1)如果我使用滚动 api 向上滚动到结果10020(并且忽略10000以下的所有内容) ,而不是对结果10000-10020执行“正常”搜索请求,内存消耗真的会降低吗?
2)滚动 API 对我来说似乎不是一个选项,但我必须增加“ index.max _ result _ window”。有人有这方面的经验吗?
3)解决我的问题还有其他选择吗?