0

查看这个答案,Update ElasticSearch mapping in production (Tire),导入新索引名称的主要方法是使用 rake

我正在使用 mysqlriver 导入我的数据(有很多,我喜欢控件)。当我第一次使用轮胎设置加载我的 ruby​​ 模型时,它会自动创建一个索引。如何更改它使用的索引名称?

  class Tag
    include Tire::Model::Search
    mapping do 
      indexes :id, :index => :not_analyzed
      indexes :name, :analyzer => 'snowball'
    end

    after_destroy { self.index.remove(self) rescue nil }
    after_save { reindex_dirty %w(name deleted) }
  end

我的目标是让它创建一个名为“tag_version_1”的索引,这样我就可以创建一个别名并进行 0-downtime 索引更改。

4

2 回答 2

1

只需index_name "my-custom-name"在模型中使用该方法即可;有关示例,请参见https://github.com/karmi/tire/blob/master/test/models/active_model_article_with_custom_index_name.rb 。

当索引已经存在时,Tire 不会尝试创建索引,因此当您创建索引、加载数据、启动应用程序时,一切都应该就位。

此外,您可能希望使用 Elasticsearch 对索引别名的支持来更方便和透明地管理。请参阅轮胎的 API:https ://github.com/karmi/tire/blob/master/test/integration/index_aliases_test.rb和文档:http ://www.elasticsearch.org/guide/reference/api/admin-indices -别名/

于 2013-08-21T17:43:36.003 回答
0

添加到@karmi 的答案。使用 index_name '我的自定义名称'。由于这个原因,我面临错误。

于 2016-03-09T07:28:40.273 回答