faster-bulk プラグインは、指定されたサイズと時間間隔に基づいて一括リクエストを集約することで、書き込み操作を最適化する組み込みツールです。これにより、小規模バッチの書き込みが書き込みキューをブロックするのを防ぎ、多数のインデックスシャードを持つ高スループットのシナリオに最適です。このプラグインはデフォルトで無効になっており、手動で有効にする必要があります。ただし、この集約はレイテンシーを増加させるため、低レイテンシーの書き込みシナリオには推奨されません。
注意事項
使用する前にプラグインをインストールする必要があります。詳細については、「組み込みプラグインのインストールまたはアンインストール」をご参照ください。
書き込みパフォーマンス
以下の参照データは、特定のテスト環境における faster-bulk プラグインのパフォーマンスを示しています。
テスト環境:16 コア、64 GB のデータノード 3 台と、16 コア、64 GB の独立したクライアントノード 2 台。公式の esrally nyc-taxis データセット (ドキュメントあたり 650 バイト) を使用し、apack.fasterbulk.combine.interval は 200 ms に設定されています。
Translog のステータス | プラグインなし | プラグインあり | パフォーマンス向上 |
同期 (デフォルト) | 182,314/s | 226,242/s | 23% |
非同期 | 218,732/s | 241,060/s | 10% |
一括集約の有効化
PUT _cluster/settings
{
"transient" : {
"apack.fasterbulk.combine.enabled":"true"
}
}集約パラメーターの設定
一括リクエストの集約サイズと時間間隔を設定します。単一のデータノード上の一括リクエストの累計サイズまたは集約時間間隔のいずれかが設定されたしきい値に達すると、システムはデータ書き込みをトリガーします。
PUT _cluster/settings
{
"transient" : {
"apack.fasterbulk.combine.flush_threshold_size":"1mb",
"apack.fasterbulk.combine.interval":"50"
}
}パラメーター | 説明 | デフォルト |
apack.fasterbulk.combine.flush_threshold_size | 単一のデータノード上で集約された一括リクエストの最大累計サイズ。 | 1mb |
apack.fasterbulk.combine.interval | 一括リクエストを集約するための最大時間間隔。単位:ms。 | 50 |
データ量が多く、同時実行数が高いシナリオでは、クラスターの容量内で最大集約サイズまたは時間間隔を増やすことができます。これにより、一括リクエストが書き込みキューをブロックするのを防ぎます。
指向性ルーティング
ルーティング値またはプライマリキー (_id) を指定せずにドキュメントをバッチ書き込みする場合、クラスターまたは特定のインデックスに対してダイレクトルーティングを有効にすることで、書き込み速度を向上させることができます。この機能は、すでにルーティング値またはプライマリキー (_id) を指定している書き込みリクエストには影響しません。
クラスターのディレクテッドルーティングを有効にするには:
PUT _cluster/settings
{
"persistent" : {
"index.direct_routing.global.enable" : "true"
}
}特定のインデックスに対してダイレクトルーティングを有効にするには:
PUT <index_name>/_settings
{
"index.direct_routing.enable" : "true"
}一括集約の無効化
PUT _cluster/settings
{
"transient" : {
"apack.fasterbulk.combine.enabled":"false"
}
}