2017-03-08 16 views
1

現在、何かに取り組んでいて、何か助けが必要でした。私は弾力性のあるインデックスをSQLデータベースから作成します。 SQLデータベースからの最初の完全な再インデックスがあり、更新を更新/削除/挿入する夜間ジョブが存在します。停止時間ゼロの再構築インデックス

重大な障害が発生した場合は、完全な再インデックスを行う必要があります。理想的には私は停止時間ゼロを望んでいます。私はエイリアスの作成に関するいくつかの記事を見つけましたが、これはフィールドマッピングの更なる更新であると考えられます。私の状況は、ソースデータベースからのデータの完全な再インデックスです。私はちょうどそのデータを取得することができます弾性と弾性にドキュメントをプッシュするだけでIDは同じになるので、既存のインデックスを更新しますか?それとも私は何か別のことをする必要がありますか?

よろしく

イスマイルは

答えて

0

ゼロダウンタイムのためには、新しいインデックスを作成することができ、データベースからそれを移入し、新しいものに古いインデックスから切り替えるためにエイリアスを使用しています。手順:

  1. main_index_1(またはものは何でもあなたが好きな)のようなメインインデックスの何かを呼び出し
  2. main_indexを指すようにアプリケーションを設定し

    curl -XPUT 'localhost:9200/main_index_1/_alias/main_index?pretty

  3. と呼ばれるそのインデックスのエイリアスを作成します。このエイリアス

  4. main_index_2という新しいインデックスを作成し、データベースからインデックス付けします。
  5. は、エイリアスが新しいインデックス

    curl -XPOST 'localhost:9200/_aliases?pretty' -H 'Content-Type: application/json' -d { "actions": [ { "remove": { "index": "main_index_1", "alias": "main_index" }}, { "add": { "index": "main_index_2", "alias": "main_index" }} ] }

+0

を指すように切り替えクール、しかしただ単に既存のデータを更新し、まだだけでなくので、0ダウンタイムをインデックスを維持すべきデータを押し上げ? – Ismail

+0

はい、理論的には、あなたは大きな失敗を話していました。この場合、何が失敗するのでしょうか? – paqash

+0

申し訳ありません。私がdbから取得したデータ更新は、抽出され、時間枠内でプッシュアップされていなければなりません。その時間枠の後、データは新しいデータで上書きされます。その間にデータの抽出が失敗したら、私は完全なインデックスを再構築する必要があります。しかし、そのリビルド中に、失効したデータが潜在的に存在するにもかかわらず、インデックスはまだ上がっていることが必要です。 – Ismail

関連する問題