系统:
我正在使用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
,我会在扩展统计信息聚合中获得正确的非零值。
其他可能值得注意的事情:当我使用Pry在我的Rails控制台中打开foo.rb然后退出时,我遇到了Cannot define multiple included blocks for a Concern
错误(尽管加载应用程序工作正常)。
我是否遗漏了一些内容以使我的记录自动导入ES?