2017-01-09 14 views
0

AWS ElasticSearch 2.3でJavaでバルクHTTP APIを使用することになりました。 私はtehのバルク・ロードのための残りのクライアントを使用する場合、私は次のエラーを取得する:AWS ElasticSearch 2.3 Java HTTPバルクAPI

504 GATEWAY_TIMEOUT 

私はJavaでラムダとしてそれを実行すると、HTTP投稿のために、私が手に:テストを通じて

{ 
    "errorMessage": "2017-01-09T19:05:32.925Z 8e8164a7-d69e-11e6-8954-f3ac8e70b5be Task timed out after 15.00 seconds" 
} 

を私はバルクAPIは、これらの設定でこれらを動作しません気づい:

"number_of_shards" : 5, 
    "number_of_replicas" : 5 

破片とレプリカが1に設定されている場合、私はバルク・ロード問題なく行うことができます。 私も私のバルク・ロードを可能にするには、この設定を使用して試してみました:

"refresh_interval" : -1 

これまでのところ、それはまったく影響を与えていません。 Java Lambdaでは、S3の場所からInputStreamとしてデータを読み込みます。 この時点でJava HTTPのオプションは何ですか? インデックス設定には他に何か試してみることはできますか? AWSアクセスポリシーに他に何かお試しいただけますか? ありがとうございます。

1Edit:action.write_consistency = 1つの&リフレッシュ_bulkしかし、これまでのところ違いはありません:?

私はまた、これらのparamsを試してみました。

2Edit:ここ

は私のバルクロードワークを作ったものである - セット一貫性のparam(私はREFRESH_INTERVAL設定する必要はありませんでした):

  URIBuilder uriBuilder = new URIBuilder(myuri); 
      uriBuilder = uriBuilder.addParameter("consistency", "one");     
      HttpPost post = new HttpPost(uriBuilder.build()); 
      HttpEntity entity = new InputStreamEntity(myInputStream); 
      post.setEntity(entity); 

答えて

2

私の経験から、問題はときに、インデックス発生する可能性がありますレプリケーションの設定をクラスタで満たすことができません。これは、ネットワークパーティション中に発生するか、物理クラスタでは満たせないレプリケーション要件を設定するだけです。

私の場合、開発クラスタ(単一ノードクラスタ)に本番設定(number_of_replicas:3)を適用すると、これが発生します。

2つのソリューション(レプリカを1に設定するか、一貫性を1に設定)は、追加のレプリカがオンラインになるのを待つことなく、バルクインデックスを継続できるようにするため、この問題を解決します。

弾性検索は、おそらく、おそらく彼らは、単一の

にクラスタを設定する弾性5で

を行い、失敗時にはより直感的なメッセージを持っている可能性があり

関連する問題