2012-01-23 4 views
0

Если у меня есть простой класс, как:Шина (клиент elasticsearch) нуждается в разбивке на страницы, чтобы выполнить импорт, как мне это сделать с помощью пользовательской модели?

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. Таким образом, существует специальный метод, который я могу создать для поддержки разбивки на страницы, и если да, то какими требованиями он должен соответствовать?

+0

Я не понимаю вопроса: из какого хранилища данных вы хотели бы импортировать «статью», когда она сохраняется в ES? – karmi

+0

Привет карми, я хочу импортировать из большого хэша. Я не получаю никакой пользы от метода импорта, просто повторяя и вставляя себя? –

+0

Вы можете навалом вставить из коллекции хешей, вам не нужно перебирать. – karmi

ответ

0

Посмотрев на метод импорта (https://github.com/karmi/tire/blob/master/lib/tire/index.rb#L103-124), есть два варианта.

  • Создайте метод, который получает постраничной per_page и page параметры в хеш опций.
  • Создайте счетчик карт, который возвращает все документы.

Затем, глядя на bulk_storehttps://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

+0

Нет: для моделей, сохранившихся в Tire, импорт не имеет никакого смысла, пока не появится какая-либо поддержка 'scan' и т. д. Или? – karmi

+0

Ну, я предположил, что у него есть определенный пользовательский уровень сохранения, но похоже, что это не тот случай. – johno

0

Я также использовал mongoid, и я обнаружил, что мне нужно требовать «will_paginate/array» в моей среде .rb, чтобы вытащить записи. Я не думаю, что вам нужно использовать его после этого, но will_paginate помогает в процессе импорта.