主に、ドキュメントのサイズ、クライアント上の利用可能なリソース、およびクライアントのタイプ(トランスポートクライアントまたはノードクライアント)によって異なります。
ノードクライアントは、クラスタ上の断片を認識しており、索引付けされるはずの断片を保持するノードに直接文書を送信します。一方、トランスポートクライアントは通常のクライアントであり、要求をラウンドロビン方式でノードのリストに送信します。バルクリクエストは1つのノードに送信され、インデックス作成時にはゲートウェイになります。
Java APIを使用しているので、BulkProcessor
をご覧になることをお勧めします。BulkProcessor
を使用すると、インデックス作成が簡単になり、柔軟にインデックスを作成できます。最後の一括実行以降、アクションの最大数、最大サイズ、および最大時間間隔のいずれかを定義できます。必要に応じて自動的に一括処理が実行されます。最大同時バルク要求数を設定することもできます。
あなたはこのようなBulkProcessor
を作成した後:
BulkProcessor bulkProcessor = BulkProcessor.builder(client, new BulkProcessor.Listener() {
@Override
public void beforeBulk(long executionId, BulkRequest request) {
logger.info("Going to execute new bulk composed of {} actions", request.numberOfActions());
}
@Override
public void afterBulk(long executionId, BulkRequest request, BulkResponse response) {
logger.info("Executed bulk composed of {} actions", request.numberOfActions());
}
@Override
public void afterBulk(long executionId, BulkRequest request, Throwable failure) {
logger.warn("Error executing bulk", failure);
}
}).setBulkActions(bulkSize).setConcurrentRequests(maxConcurrentBulk).build();
あなたはそれにあなたの要求を追加する必要があります。
bulkProcessor.add(indexRequest);
と持つかもしれない最終的な要求をフラッシュする最後でそれを閉じますまだ実行されていません:
bulkProcessor.close();
最後にあなたの質問に答えるには:thまた、についての素晴らしい点は、5MBのサイズ、1000のアクション、1つの同時リクエスト、フラッシュ間隔なし(設定に便利かもしれない)といった賢明なデフォルトがあることです。
をしてください役に立てば幸い..... –