物理複製功能適用於索引有副本、寫入資料量大、對資料寫入後可見度延遲要求不高的情境(如日誌情境、時序分析情境),可大幅降低CPU開銷,提升寫入效能。與原生Elasticsearch相比,開啟物理複製功能後寫入效能提升大於45%。
物理複製功能由Elasticsearch自研的apack外掛程式提供,6.7.0(核心版本1.2.0及以上)和7.10.0版本的執行個體預設已安裝apack外掛程式,不可卸載,可在外掛程式配置頁面查看安裝狀態。本文中的命令均可在Kibana控制台中執行,詳情請參見通過Kibana串連叢集。
開啟物理複製功能
建立索引時,通過settings開啟物理複製功能。開啟後,主分區的寫入機制與原生Elasticsearch一致(既寫索引檔案也寫translog),而副本分區唯寫translog。主分區在每次refresh時,通過網路將增量的索引檔案拷貝到副本分區,主副分區的可見度延遲為毫秒層級。

apack外掛程式安裝後建立的索引預設已開啟物理複製功能,無需手動設定。如需為外掛程式安裝前建立的索引開啟物理複製功能,請參見為已有索引開啟物理複製功能。
PUT index-1
{
"settings": {
"index.replication.type" : "segment"
}
}關閉物理複製功能
關閉物理複製功能後,索引切回原生模式(主副分區都會寫索引檔案和translog)。如需使用通過CCR跨叢集複製解決跨叢集容災情境,必須先關閉物理複製功能。
關閉索引。
POST index-1/_close更新索引settings,關閉物理複製功能。
PUT index-1/_settings { "index.replication.type" : null }開啟索引。
POST index-1/_open
為已有索引開啟物理複製功能
為原生模式的已有索引開啟物理複製功能前,需要先將副本數設定為0並關閉索引。
將索引的副本數設定為0。
PUT index-1/_settings { "index.number_of_replicas": 0 }關閉索引。
POST index-1/_close更新索引settings,開啟物理複製功能。
PUT index-1/_settings { "index.replication.type" : "segment" }開啟索引。
POST index-1/_open將索引的副本數設定為1。
PUT index-1/_settings { "index.number_of_replicas": 1 }