ruby-on-rails - 在 ActiveRecord 模型的 Elasticsearch 索引之间共享设置(轮胎 gem)

标签 ruby-on-rails elasticsearch tire

我有 tire格式中的单个 ActiveRecord 模型正常工作

setting do
  ...SETTINGS...
  mapping do
    ...INDEXES...
  end
end

如果可能的话,我想在多个模型之间共享这些设置。我无法从初始化程序中找到任何方法。

我怎样才能做到这一点?

最佳答案

鉴于 Ruby 的灵 active ,这里有很多可用的选项。最明显的:

  • 使用一个或多个模块常量/方法将所需的设置/映射存储为哈希,然后将它们传递给轮胎方法。
  • 在模块中定义共享设置/映射/行为,然后您可以将其包含在模型中。 tire/issues/481 中详细描述了该方法。 .

  • 相关片段:
    module Searchable
    
      def self.included(base)
    
        p "Included in #{base}"
    
        base.class_eval do
          include Tire::Model::Search
    
          tire do
            mapping do
              indexes :title,   type: 'string', analyzer: 'snowball'
            end
          end
        end
      end
    end
    
    class Article < ActiveRecord::Base
      include Searchable
    end
    
    class Person < ActiveRecord::Base
      include Searchable
    end
    

    这实际上不必在初始化程序中——您可以将它放在任何可从 Rails 应用程序加载的位置。

    关于ruby-on-rails - 在 ActiveRecord 模型的 Elasticsearch 索引之间共享设置(轮胎 gem),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13632975/

    相关文章:

    elasticsearch - Elasticsearch:同一领域具有多种语言的文档的映射?

    elasticsearch - 如何使用Java API重写ElasticSearch DSL查询

    elasticsearch - 选择与 Elasticsearch 不同的

    regex - 正则表达式vs包含Elasticsearch中的性能比较

    ruby-on-rails - not_analyzed无法正常工作

    ruby-on-rails - 协会中的Rails轮胎搜索has_many

    ruby-on-rails - 使用 mongodb 嵌套字段

    ruby-on-rails - 没有路由匹配 [GET] "/app1"

    ruby-on-rails - rails : How do I autocomplete search for Name but save ID?

    ruby-on-rails - Rails 路由命名空间错误?