Elasticsearch - Авто-импорт записей из модели Active Record
Система:
- Рельсы 4
- Рубин 2
- Elasticsearch 1.6.0
Я использую Elasticsearch для фильтрации записей и вычисления статистики для моих моделей Active Record. Я бы хотел, чтобы мои индексы Elasticsearch отражали мою базу данных Postgres, чтобы существующие записи импортировались в мои индексы, новые записи индексируются по мере их создания и т. Д.
У меня есть опасение, что две мои модели включают в себя так:
# app/models/concerns/foo.rb
module Foo
extend ActiveSupport::Concern
included do
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
self.import force: true
end
class_methods do
def statistics(filter = {})
# ES extended_stats aggregations
end
end
end
# app/models/bar.rb
# Same for another class
class Bar < ActiveRecord::Base
include Foo
end
Однако, когда я открываю консоль Rails и вызываю Bar.statistics
, Я получил nil
в каждой области. Если я тогда выполню Bar.import force: true
а потом Bar.statistics
, Я получаю правильные, не нулевые значения в моей расширенной статистике агрегации.
Что-то еще, что может быть примечательно: когда я открыл foo.rb в моей консоли Rails с помощью Pry и затем вышел, я столкнулся с Cannot define multiple included blocks for a Concern
ошибка (хотя загрузка приложения работает нормально).
Я что-то упускаю для автоматического импорта моих записей в ES?