全部產品
Search
文件中心

Elasticsearch:使用bulk彙總外掛程式(faster-bulk)

更新時間:Apr 04, 2026

faster-bulk 是系統內建的寫入最佳化外掛程式,支援按指定大小與時間間隔彙總 Bulk 請求,防止小批量寫入阻塞隊列,適用於高吞吐、多分區情境。該外掛程式預設關閉,需手動開啟後生效。因彙總會引入等待延遲,不適用於低延遲寫入情境。

使用須知

使用前需先安裝外掛程式,請參見安裝或卸載系統預設外掛程式

寫入效能參考

以下為faster-bulk外掛程式在特定測試環境下的效能資料,供評估參考。

測試環境:3 * 16核64 GB資料節點 + 2 * 16核64 GB獨立協調節點,esrally官方資料集nyc-taxis(單文檔650位元組),apack.fasterbulk.combine.interval設定為200ms。

translog狀態

未使用外掛程式

使用外掛程式

效能提升

同步狀態(預設)

182314/s

226242/s

23%

非同步狀態

218732/s

241060/s

10%

開啟bulk彙總功能

PUT _cluster/settings
{
   "transient" : {
      "apack.fasterbulk.combine.enabled":"true"
   }
}

設定彙總參數

指定bulk請求的彙總大小和時間間隔。當單個資料節點上bulk請求的累計大小或彙總時間間隔達到閾值時,觸發資料寫入。

PUT _cluster/settings
{
   "transient" : {
      "apack.fasterbulk.combine.flush_threshold_size":"1mb",
      "apack.fasterbulk.combine.interval":"50"
   }
}

參數

說明

預設值

apack.fasterbulk.combine.flush_threshold_size

單個資料節點上彙總的bulk請求的最大累計大小。

1mb

apack.fasterbulk.combine.interval

彙總的bulk請求的最大時間間隔,單位為ms。

50

對于海量資料高並發情境,在叢集可承受的壓力範圍內,可適當調大最大彙總大小或最大時間間隔,減少bulk請求阻塞寫入隊列。

定向路由

當批量寫入文檔未指定routing和主鍵(_id)時,可為叢集或指定索引開啟定向路由,進一步提高寫入速度。如果寫入請求中指定了routing或主鍵(_id),定向路由不會生效,不影響正常的業務寫入。

為叢集開啟定向路由:

PUT _cluster/settings
{
  "persistent" : {
    "index.direct_routing.global.enable" : "true"
  }
}

為指定索引開啟定向路由:

PUT <index_name>/_settings
{
  "index.direct_routing.enable" : "true"
}

關閉bulk彙總功能

PUT _cluster/settings
{
   "transient" : {
      "apack.fasterbulk.combine.enabled":"false"
   }
}