属性相关动态索引(轮胎、导轨) - 弹性搜索



我有一些红宝石类

class MyClass
   include Tire::Model::Persistence
   attr_accessor :date
   mapping do
      index_name Proc.new{|o| "my_class_#{o.date_index}" }  # How to?
   end
   def initialize(d)
     @date = d
   end
   def date_index
      @date.strftime("%m%y")
   end
end

初始化类后,如何动态设置index_name?

红宝石 (1.9.3)导轨(3.2.3)轮胎 (0.4.2)

对于许多边缘情况,这仍然是一个未解决的问题。有很多方法可以在 elasticsearch 中查看索引。

首先,完全可以像这样定义动态索引名称:

Article.index_name { "articles-#{Time.now.year}" }

请参阅 https://github.com/karmi/tire/blob/master/lib/tire/model/naming.rb#L10-35

其次,一种更灵活、更强大、更面向未来的方法是在 elasticsearch 中使用别名功能。

请参阅 https://github.com/karmi/tire/blob/master/test/integration/index_aliases_test.rb#L66 以获取有关可能性的灵感。

然后,创建类似索引别名mydocs_current("虚拟索引")的东西,并将其指向特定的物理索引,例如mydocs_2012_06。然后,在 cron 作业等中轮换此索引。

搜索时,您可以使用Tire.search DSL,也可以即时将不同的索引/别名注入模型类中。

相关内容

  • 没有找到相关文章

最新更新