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?

0 ответов