[英]Attribute dependent Dynamic Index (Tire, Rails) - ElasticSearch
我有一些紅寶石課
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或Tire.search
向模型類中注入其他索引/別名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.