2017-12-21 11 views
0

"products"という名前のインデックスと "products_temp"という名前のインデックスがあります。私は新しい製品で "products_temp"を記入し、次に "products"インデックスを削除し、 "products_temp"インデックスの名前を "products"に変更します。これはElasticsearchで可能ですか?そうであれば、推奨されるアプローチは何ですか?弾性検索名の変更インデックス

この「商品再同期」プロセスを毎日繰り返す必要があります。

+0

使用しているESのバージョンに応じて:[ES再インデックスAPI](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex。 html) –

+0

私は現在バージョン5.6.2を使用しています。しかし、プロジェクトが新しくなると6.1.1に更新することができます。私が誤解していないなら、Reindex APIはバージョン2.3.0からサポートされていますか?私はここでそれを読む:https://www.elastic.co/blog/reindex-is-comingそれはうまくいくはずだ。ありがとう!試してみる。 – JedatKinports

+1

はいReindex APIはバージョン5.6でもサポートされています。 –

答えて

1

インデックスの名前を変更することはできません。推奨される方法は、aliasを使用して、それがあなたが望む任意のインデックスを指すことです。

は参照してください:How to rename indices

+0

だから私はエイリアスでこれをやりますか?私はインデックス "製品"を持っているし、私は新しい "products_temp"を作成する場合。私は新しい製品でtempを埋めて、 "products"を削除し、 "products_temp"インデックスに別名 "products"を追加します(これは問題ありませんが、これらの手順をプログラムで繰り返す必要があります)。次に製品を「再同期」したいときはどうなりますか?それで、すでに存在するので、 "products_temp"という名前の新しいインデックスを作成できないので、同じプロセスを繰り返すことはできません。それから私はどこかに旗や何かを保存しなければならないでしょう。これはそれを行う方法ですか? – JedatKinports

+0

これは、これを実行するためのより速い(パフォーマンス上の)方法でしょう。再インデックスと同じように、私はすべての古い文書を最初に削除する必要があります。 – JedatKinports

+0

新しいインデックスを作成するたびにタイムスタンプを追加し( 'product_1513845889')、インデックスが正常に作成されると、この新しく作成されたインデックスに別名を指します。これはすべてプログラムで行うことができます。 –

関連する問題