4

我正在使用 elasticsearch-rails 和 will_paginate gem 使用 Elasticsearch 运行 Rails,并且运行良好。

我遇到的唯一问题是我的记录数已超过 10.000,这会在有人单击时出现错误“结果窗口太大,从 + 大小必须小于或等于:[10000] 但为 [10200]”在分页链接的最后一页。

现在我不想弄乱 index.max_result_window 因为我的数据集要大得多,而且我真的不需要访问者能够查看每个页面并进行记录。

所以基本上我只想对我的结果设置一个 10.000 的限制,但我没有运气让它工作。

这是我在控制器操作中的查询:

@response = Price.search(params)
@response = @response.paginate(page: params[:page], per_page: 24)
@prices = @response.records.includes(shop: :pictures)
@prices_count = @response.total_entries
@prices = @prices.decorate
@results = @response.results

我将@response 提供给 will_paginate 使用

will_paginate(@response)

我尝试在不同的地方使用 .limit(10000) 并为 will_paginate 提供一个 total_entries 值,但似乎没有任何效果。

你们有什么想法吗?

谢谢!

4

2 回答 2

1

我有同样的问题,就我而言,我正在使用kaminari但应该与以下内容相同will_paginate

= 分页@keyword_search_results

在 400 页后每页有 25 个结果会引发index.max_result_window错误,所以我只需将:total_pages选项添加到paginate

= 分页 @keyword_search_results, {:total_pages => 400}

根据您的需要动态计算该值是一个好主意。

于 2018-06-06T16:54:19.570 回答
0

使用 per_page 选项
@response = Price.search(params, per_page: 24)

于 2017-11-26T09:24:16.513 回答