Elasticsearch - 从Active Record模型自动导入记录

时间:2015-07-30 19:07:24

标签: ruby-on-rails elasticsearch activesupport-concern elasticsearch-rails elasticsearch-model

系统:

  • Rails 4
  • Ruby 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,我会在扩展统计信息聚合中获得正确的非零值。

其他可能值得注意的事情:当我使用Pry在我的Rails控制台中打开foo.rb然后退出时,我遇到了Cannot define multiple included blocks for a Concern错误(尽管加载应用程序工作正常)。

我是否遗漏了一些内容以使我的记录自动导入ES?

0 个答案:

没有答案