システム:
- レール4
- ルビー2
- エラスティックサーチ 1.6.0
Elasticsearch を使用してレコードをフィルタリングし、Active Record モデルの統計を計算しています。Elasticsearch インデックスに Postgres データベースを反映させて、既存のレコードがインデックスにインポートされたり、新しいレコードが作成されるとインデックスが作成されるようにしたいと考えています。
私のモデルの2つが次のように含まれていることに懸念があります。
# 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
、拡張統計集計で nil 以外の正しい値が得られます。
その他の注意点: Pry を使用して Rails コンソールで foo.rb を開いて終了すると、Cannot define multiple included blocks for a Concern
エラーが発生しました (ただし、アプリケーションのロードは正常に機能します)。
自分のレコードを ES に自動インポートするための何かが不足していますか?