2016-09-17 10 views
2

私のRuby/Sinatraアプリケーションは、elasticsearch-ruby gemを使用してAWS ESクラスタに接続し、ユーザーが検索できる(ユーザーIDを使用して索引付けする)テキスト文書を索引付けします。今、別の権限のあるユーザーが照会できるように、ある索引から別の索引に文書をコピーしたいとします。AWS Elastic Searchを再インデックスする方法は?

Elasticsearch::Transport::Transport::Errors::Unauthorized - [401] {"Message":"Your request: '/_reindex' is not allowed."}:

の周りグーグルで、私は両方彼らのAPIの上のすべてのサポートされている操作を示していますアマゾンドキュメントページに出くわし、およびいくつかのねじれた理由_reindexのISNのため」:私は次のエラーを取得するためにon this fileを文書として_reindexエンドポイントが試しましたまだありません。何故ですか?もっと重要なことは、 これを効率的に回避し、私がしたいことを達成する方法は?

答えて

1

AWS ESが導入したElasticsearchのバージョンをもう一度確認する必要があります。 _reindex APIはversion 2.2で利用できるようになりました。 ESルートIP &ポートをカールで取得することによって、バージョン番号を確認することができます。 version.numberをチェックします。

_reindexエンドポイントを持っていない回避するために、私はあなたがそれを自分で実装することをお勧めします。これはあまりにも悪くありません。 use a scrollを使用して、再インデックスするすべてのドキュメントを繰り返し処理できます。インデックス全体の場合は、スクロールでmatchallクエリを使用できます。ドキュメントを自由に操作したり、単にthe bulk apiを使用して新しいインデックスにドキュメントを投稿(つまり再インデックス化)することができます。

事前に必要なマッピングテンプレートを使用して新しいインデックスを作成してください。

上記の手順は、多くのドキュメントを再インデックスする場合に最適です。あなたがちょうど少数または1つを移動したいと思えば(あなたのように聞こえる)。文書を既存のインデックスからIDでsubmit itの2番目のインデックスに取得します。

関連する問題