在完全相容開源Elasticsearch(ES)核心的所有特性基礎上,阿里雲ES在監控指標多樣化、線程池、熔斷策略最佳化、查詢與寫入效能最佳化等諸多方面,深度定製了AliES核心引擎。基於Elasticsearch團隊在多種應用情境下所積累的豐富經驗,提升叢集穩定性、增強效能、最佳化成本和豐富監控營運功能。本文介紹AliES的核心版本及重點最佳化的特性。
ES 7.16.2版本
1.7.0核心版本發布說明
新增aliyun-timestream時序增強外掛程式,支援TimeStream時序類型索引的增刪改查,降低時序情境門檻。詳細資料,請參見TimeStream時序增強引擎介紹。
支援使用PromQL查詢資料。詳細資料,請參見基於TimeStream對接Prometheus+Grafana實現可觀測性。
ES 7.10.0版本
1.12.0核心版本發布說明
新增、最佳化特性
search:
增加同義字外掛程式。
在保持原有均衡能力的情況下增加主分區均衡功能。
增加wildcard,prefix查詢參數長度限制能力。
基於DocValue最佳化keyword類型terms、prefix等複雜查詢,低命中率情境下查詢效能提升80%。
基於DocValue最佳化數實值型別term、terms查詢,低命中率情境下查詢效能提升80%。
基於lazyload策略最佳化BKD term/terms情境的查詢效能,查詢效能提升30%。
Bug修複
最佳化儲存層任務管理,解決偶發出現RPC通訊卡住的問題。
最佳化資料複製流程,避免副本節點出現fail engine。
最佳化副本晉陞流程,避免出現主/副本索引檔案內容不一致的問題。
1.10.0核心版本發布說明
新增、最佳化特性
Store/Snapshot:
最佳化LuceneVerifyIndexOutput實現,提升索引恢複速度。更多資訊,請參見ES pull 96975。
Cluster Coordination
持久化任務不再引用ClusterState,大規模叢集中會導致master節點記憶體升高,為避免大規模叢集選主逾時,cluster.election.initial_timeout預設值從100 ms改成1 s。更多資訊,請參見ES pull 90724。
Search
增加端到端查詢逾時功能,有效控制查詢整體耗時,支援在逾時情況下返回部分結果。
訪問日誌增加部分欄位。
Bug修複
Lucene:
修複Lucene Merge引用的DV update索引檔案,被並發flush操作刪除的問題。更多資訊,請參見Lucene。
1.9.0核心版本發布說明
新增、最佳化特性
核心增強版並發查詢方塊架重構和最佳化:
最佳化並發架構,降低查詢耗時。
實現了記憶體複用,最佳化JVM記憶體熔斷和GC開銷問題,充分提高資源利用。
降低原文fetch並發中fetch階段的耗時。例如,size為10000的情境,fetch階段可以降低6~10倍耗時,整體耗時可以降低50%。
適配更多的彙總查詢,包括PercentilesAggregation、PercentileRanksAggregation、SamplerAggregation、DiversifiedAggregation、SignificantTextAggregation、GeoDistanceAggregation、GeoHashGridAggregation、GeoTileGridAggregation、GeoBoundsAggregation、GeoCentroidAggregation、ScriptedMetricAggregation。
端到端的訪問日誌增加查詢耗時、traceId等欄位,可以使用traceId串聯查詢流程。
通過最佳化自訂原文索引結構和mapping解析,實現原文寫入最佳化,使原文寫入效能提升一倍。
通過以下代碼開啟Cache,解決某些情境中主查詢少,子查詢多,而未對子查詢開啟緩衝的問題。
PUT _cluster / settings { "persistent": { "search.query_cache_get_wait_lock_enable": "true", "search.query_cache_skip_factor": "200000000" } }
最佳化knn情境主副本分區點位不一致問題。
Bug修複
修複藍綠變更時,當節點上面Shard遷移後, 執行
GET _cat/node
異常的問題。
1.8.0核心版本發布說明
新增aliyun-timestream時序增強外掛程式,支援TimeStream時序類型索引的增刪改查,降低時序情境門檻,並支援使用PromQL查詢資料以及按照InfluxDB的行協議寫資料。詳細資料請參見TimeStream時序增強引擎介紹和基於TimeStream對接Prometheus+Grafana實現可觀測性和TimeStream整合InfluxDB寫協議介面。
1.7.0核心版本發布說明
新增特性
Analyticsearch查詢最佳化上線,基於日誌檢索外掛程式實現查詢效能大幅提升,具體說明如下:
日誌檢索情境,例如Kibana Discover查詢加速,最佳化索引合并策略及Date_histogram執行計畫策略,無條件或單條件查詢效能提升6倍以上(日增量>1 TB資料量的情境下,分鐘級查詢可最佳化至5s內)。
最佳化並發查詢,實現召回過程的並發,提高資源使用率,日誌情境召回階段平均耗時降低50%。
唯讀小segment在Force Merge前持續合并,相比合并前查詢效能提升20%。
效能最佳化
協調節點和資料節點間寫入請求傳輸使用輕量級壓縮演算法LZ4,節點網路頻寬開銷降低30%。
最佳化Force Merge任務的並發粒度至分區層級,降低Force Merge耗時。
支援配置原文大塊壓縮並最佳化ZSTD壓縮演算法參數,原文大小降低8%;通過最佳化Backports lucene postings pfor編碼,索引大小降低3%。
Bug修複
修複aliyun-codec外掛程式中,source_reuse_doc_values特性不支援帶
.
的欄位名問題。
1.6.0核心版本發布說明
在aliyun-codec外掛程式中新增source複用docvalue特性,進一步降低索引大小及成本,詳細資料請參見使用aliyun-codec外掛程式。
更新aliyun-qos外掛程式2.0版本,支援更細粒度的限流類型和限流參數設定,詳細資料請參見使用叢集限流外掛程式(aliyun-qos)。
1.5.0核心版本發布說明
支援aliyun-codec外掛程式,增強核心壓縮效能,詳細資料請參見使用aliyun-codec外掛程式。
修複search_as_you_type漏洞,詳細資料請參見search_as_you_type。
1.4.0核心版本發布說明
更新aliyun-knn外掛程式,最佳化寫入效能,使寫入效能相對於老版本有所提升;同時支援script查詢,並整合了smind硬體最佳化後的指令,豐富了向量檢索功能。
增強aliyun-qos分布式限流外掛程式功能,提供了叢集層級的限流能力,使您無需再關注內部節點的實際拓撲和負載情況,各節點之間能夠自適應分配流量比例,易用性與穩定性相比單機版QoS有顯著提升。
1.3.0核心版本發布說明
提供慢查詢隔離池,降低異常查詢對叢集穩定性的影響。
提供gig流控外掛程式,實現機器異常秒級切流,降低壞節點導致查詢抖動的機率。
說明在商業版7.10.0中,gig流控外掛程式預設整合在aliyun-qos叢集限流外掛程式中(預設已安裝),不需要單獨安裝。
支援通用物理複製功能,提高有副本索引的寫入效能。
支援時序查詢剪枝功能,提高含時序欄位範圍的查詢效能。
支援查詢access.log,包括請求時間、用戶端來源和請求內容等,可用於問題排查和請求分析。
主節點調度效能提升10倍,支援調度更多分區數。
ES 6.7.0版本
1.3.0核心版本發布說明
在使用以上功能時,需要先將核心版本升級至1.3.0版本,支援升級的版本包括:通用商業版0.3.0、1.0.2、1.3.0,不支援1.0.1。
1.2.0核心版本發布說明
支援通用物理複製功能,提高有副本索引的寫入效能。
支援時序查詢剪枝功能,提高含時序欄位範圍的查詢效能。
支援主鍵查詢去重最佳化,帶主鍵文檔的寫入效能提升10%。
支援堆外FST,單節點支援儲存最大20 TB的索引資料。
1.0.2核心版本發布說明
支援查詢access.log,包括請求時間、用戶端來源、請求內容等,可用於問題排查和請求分析。
1.0.1核心版本發布說明
支援配置JVM熔斷策略,JVM達到95%後會拒絕請求保護叢集,參數設定如下:
indices.breaker.total.use_real_memory:預設為false。
indices.breaker.total.limit:預設為95%。
0.3.0核心版本發布說明
主節點調度效能提升10倍,支援調度更多分區數。
寫入效能提升10%,降低translog落盤鎖的開銷。