2

次のシナリオに対処する方法について明確に理解したいと思います。

activerecord モデルに属性を追加または削除しているので、本番環境で ElasticSearch のマッピングを更新したいと考えています。

私が理解したことから、私は...

1- 新しいインデックスを作成し、mysql からすべてをインポートします

これは正しいコマンドですか?rake environment tire:import CLASS='Bow' INDEX='new-bows' これで正しいマッピングを作成するには、モデル内のマッピングを既に更新しているはずですよね?

2- 古いマッピングを削除し、次の名前のエイリアスを作成しbowsますnew-bows

私はそのようにします、それは正しいですか?

old_index_name = Bow.tire.index.name
Bow.tire.index.delete
alias = Tire::Alias.new
alias.name(old_index_name)
alias.index('new-bows')
alias.save

3-アプリを再起動します


何か不足していますか、それともタイヤを使用して目的を達成するためのより簡単な方法はありますか?

どの時点で古いインデックスを削除する必要がありますか? 同じ名前でエイリアスを作成する前に、または後で作成できますか?

4

2 に答える 2

3

新しい列をインデックスに追加するには:

index = Tire.index("articles")

index.mapping("article", :properties => { :pinterest_shares => {:type => 'integer', :index => 'not_analyzed', :include_in_all => false} })
于 2013-09-14T22:02:33.397 に答える
3

新しいインデックスが 100% 必要なものであると確信できるまで、古いインデックスを保持する必要があります。そうでない場合は、エイリアスを元に戻すことができます。

「フリッピング エイリアス」の統合テストが Tire テスト スイートにあります。

于 2013-03-13T09:04:19.660 に答える