Tire(弹性搜索客户端)需要分页才能执行导入,如何使用自定义模型执行此操作?

时间:2012-01-23 21:24:20

标签: ruby elasticsearch tire

如果我有一个简单的类:

class Article
  include Tire::Model::Persistence

  property :title,        :analyzer => 'snowball'
  property :published_on, :type => 'date'
  property :tags,         :default => [], :analyzer => 'keyword'

end

如果有分页方法,我似乎只能执行Article.import。但因为这是一个自定义持久模型,我没有使用ActiveRecord,我无法使用WillPaginate或Kaminari。那么我可以创建一个自定义方法来支持分页,如果有的话,它必须满足哪些要求?

2 个答案:

答案 0 :(得分:0)

查看导入方法(https://github.com/karmi/tire/blob/master/lib/tire/index.rb#L103-124)看起来有两种选择。

  • 创建一个paginate方法,在选项哈希中获取per_pagepage个参数。
  • 创建一个返回所有文档的地图枚举器。

然后查看bulk_store https://github.com/karmi/tire/blob/master/lib/tire/index.rb#L67-79您已满足文档本身的其他要求。查看方法https://github.com/karmi/tire/blob/master/lib/tire/index.rb#L67-79

答案 1 :(得分:0)

我也在使用mongoid,我发现我需要在我的环境.rb中要求'will_paginate / array'以便拉入记录。我不认为你之后需要使用它,但will_paginate会帮助导入过程。