2016-11-15 3 views
0

私たちの生産でElasticsearchに関連する問題を修正しようとしていますが、これは常に再現性がありません。私はElasticsearch 1.5を使用しています(まだアップグレードしていません)。elasticsearchはいつインデックスを回復しようとしますか?

問題は、インデックスを作成しようとしているときに、私は例外IndexAlreadyExistsExceptionとエラーが出るということですので、呼び出しに

client.admin().indices().prepareExists(index).get().isExists(); 
私は私がすることを得るインデックスを作成しようとすると、Elasticsearchが、その後回復モードになっているよう

はfalseを返します例外。

以下は、インデックスの回復中にElasticsearchがfalseを返すという問題へのリンクです。

8945 8105

私は、問題を再現することはできませんよいつものように私はisExists()をチェックする前に最初の健康状態をチェックすることです私の修正をテストすることはできませんよ。

私の質問は、いつElasticsearchが回復を開始するのですか?

答えて

0

あなたは、インデックスのメンテナンス操作を行う前に、与えられた状況に到達するためにクラスタを待つためにprepareHealth()管理方法を使用することができます。

ClusterHealthResponse health = client.admin().cluster().prepareHealth(index) 
    .setWaitForGreenStatus()      
    .get(); 

またはあなたはまた、緑を取得するために、クラスタ全体のを待つことができます。

ClusterHealthResponse health = client.admin().cluster().prepareHealth() 
    .setWaitForGreenStatus()      
    .get(); 
+0

はい、私はそれを行うことができますが、それが解決策です。私が探しているのは、弾性検索がいつ回復しようとするのかという答えです。現時点では、問題はわずか数回の生産で再現可能になります。私はそれをローカルで再現したい。ローカルでそれを再現するには、回復モードにするにはElasticsearchが必要ですが、ローカルインストールではすべて正常に動作します。 – Pratz

+1

インデックスのリカバリを人為的にトリガしたい場合は、 'RecoveryResponse recoveryResponse = client().admin().indices()。prepareRecoveries(index).get();'を使用できます。 – Val

+0

あなたは何をしたいのですか? – Val

関連する問題