0

この回答を見ると、Update ElasticSearch mapping in production (Tire)、新しいインデックス名にインポートする主な方法はra​​keを使用することです

私は 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」という名前のインデックスを作成して、エイリアスを作成し、ダウンタイムなしでインデックスを変更できるようにすることです。

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 のインデックス エイリアスのサポートを使用することもできます。Tire の 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 に答える