apack外掛程式是Elasticsearch團隊自研的外掛程式,支援物理複製和向量檢索功能,本文僅介紹物理複製功能。物理複製功能適用於索引有副本、寫入資料量大、對資料寫入後可見度延遲要求不高的情境,例如日誌情境、時序分析情境等,可以大幅度降低CPU開銷,提升寫入效能。
前提條件
- 建立Elasticsearch執行個體,版本為6.7.0且核心版本為1.2.0及以上,或7.10.0。本文以Elasticsearch 6.7.0為例介紹。建立執行個體的方法,請參見建立Elasticsearch執行個體。
- 安裝apack外掛程式。 目前僅6.7.0和7.10.0版本的Elasticsearch執行個體支援apack外掛程式。當6.7.0執行個體的核心版本為1.2.0以下時,需升級核心版本後使用該外掛程式;當執行個體的核心版本為1.2.0及以上時,系統預設已安裝apack外掛程式,不可卸載。您可在外掛程式配置頁面查看。說明 apack外掛程式安裝後,您既可以使用物理複製功能,也可以使用向量檢索功能。本文僅介紹物理複製功能的使用方法,向量檢索功能的使用方法請參見使用向量檢索外掛程式(aliyun-knn)。
背景資訊
物理複製功能的基本原理為: Elasticsearch中索引的主分區和副本分區(以下簡稱主副分區)之間的同步原理預設與原生Elasticsearch一樣,即請求先寫入主分區,再由主分區同步給副本分區,此時主副本分區都會寫索引檔案及translog。開啟物理複製功能後,Elasticsearch主分區寫入機制與原生Elasticsearch一樣,既寫索引檔案也寫translog,而副本分區唯寫translog以保證資料的可靠性和一致性。主分區在每次refresh時,通過網路將增量的索引檔案拷貝到副本分區,在主副分區分配可見度延遲為毫秒層級的情況下,大幅度提高了叢集的寫入效能。
物理複製功能的效能測試資訊如下:
- 測試環境
- 機器配置:資料節點8核32 GB*5 + 2 TB SSD雲端硬碟。
- 資料集:官方Rally內建的nyc_taxis(74 GB)。
- 索引配置:使用預設配置(5個主分區,1個副本分區)。
- 測試結果
產品 寫入速度(doc/s) 原生Elasticsearch 6.7.0 127305 Elasticsearch 6.7.0,並開啟物理複製功能 184592 - 結論
與原生Elasticsearch相比,Elasticsearch在開啟了物理複製功能後,寫入效能提升大於45%。
說明 本文中的命令均可在Kibana控制台中執行,詳情請參見登入Kibana控制台。
注意事項
- apack外掛程式的物理複製功能作用於索引。對於外掛程式安裝前建立的索引,預設未開啟,使用時需要先開啟。對於外掛程式安裝後建立的索引,預設開啟。
- Elasticsearch支援將已開啟物理複製功能的索引切回到原生模式(主副分區都會寫索引和translog),但需要先關閉該索引。
- 在為原生模式的索引開啟物理複製功能前,需要先關閉該索引,並將副本數設定為0。
開啟物理複製功能
在建立索引時,通過settings開啟物理複製功能。
PUT index-1
{
"settings": {
"index.replication.type" : "segment"
}
}
關閉物理複製功能
- 關閉索引。
POST index-1/_close
- 更新索引settings,關閉物理複製功能。
PUT index-1/_settings { "index.replication.type" : null }
- 開啟索引。
POST index-1/_open
為已有索引開啟物理複製功能
- 將索引的副本數設定為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 }