我们从Elasticsearch 2.1中检索信息并允许用户查看结果。当用户请求高页码,我们得到了以下错误消息:Elasticsearch 2.1:结果窗口太大(index.max_result_window)
结果窗口过大,从+大小必须小于或等于 到:[10000]但[10020]。请参阅滚动API以获得更高效的请求大型数据集的方式。此限制可通过改变设置的 [index.max_result_window]索引等级参数
弹性实况说,这是因为高存储器消耗和使用滚动API:
值更高比可以消耗大量的堆内存每 搜索和每个碎片执行搜索。这是最安全的离开这个 值,因为它是一个用于任何滚动API深滚动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)有没有其他的选择来解决我的问题?
所以在这里,我们应该放弃深度分页,对吧?基本上,对于单个查看器来说,不存在分页4000页的含义。比方说,谷歌搜索,我们很难滚动到第8或第9页检查结果。通常我们只关注Google给我们的前3-5个页面。 – dotslash
如果我们需要深度分页,我们可以使用滚动API吗? –
但是,当我们启用排序功能时,可以在电子商务网站上说。当用户想要查看价格最高的商品时。当我们按最高价格比较排序时,结果会有所不同,而当我们按最低页面排序时,结果会有所不同,但最后一页是正确的?因为我们限制可以访问的结果的数量。 任何解决此问题的方法? –