Я индексирую набор данных для elasticsearch, используя Tire и ActiveRecord. У меня есть модель Artist, в которой has_many :images. Как я могу проиндексировать метод модели Artist, который возвращает определенное изображение? Или, альтернативно, сослаться на метод связанной модели? Мой желаемый результат Artist будет включать пути для основного изображения, связанного с Artist (как оригинал, так и миниатюра).
Я пробовал это сопоставление:
mapping do
indexes :id, :index => :not_analyzed
indexes :name
indexes :url
indexes :primary_image_original
indexes :primary_image_thumbnail
end
для ссылки на эти методы Artist:
def primary_image_original
return images.where(:priority => 'primary').first.original
end
def primary_image_thumbnail
return images.where(:priority => 'primary').first.thumbnail_150
end
Это просто игнорирует индексированные методы. На основе других ответов, таких как Elasticsearch, Tire и вложенные запросы/ассоциации с ActiveRecord, я пробовал это:
mapping do
indexes :id, :index => :not_analyzed
indexes :name
indexes :url
indexes :images do
indexes :original
indexes :thumbnail_150
indexes :priority
end
end
def to_indexed_json
to_json(include: { images: { only: [:original, :thumbnail_150, :priority] } } )
end
Но это также не возвращает то, что мне нужно. Я потратил несколько часов на гугление и чтение документации elasticsearch и Tire и не нашел рабочего примера этого шаблона. Спасибо за ваши идеи!
:as
? К сожалению, сейчас нет времени вникать в это подробнее. - person karmi   schedule 29.11.2012to_indexed_json
? - person karmi   schedule 29.11.2012