PolarSearch版本選型指南
PolarSearch提供1.x和3.x兩個主要版本,基於不同的OpenSearch核心構建。本文從核心特性、用戶端相容性和適用情境三個維度對比兩個版本的差異,協助您根據業務需求選擇合適的版本。
選型概述
PolarSearch的版本選擇,核心是在相容性與效能之間做出權衡。在添加搜尋節點時,您需要根據業務的長期規劃和對代碼改造成本的接受度,在1.x和3.x版本間進行決策。PolarSearch提供以下決策指南,協助您作出最合適的選擇:
決策維度 | 選擇PolarSearch 1.x(Elasticsearch相容優先) | 選擇PolarSearch 3.x(效能優先) |
核心業務需求 | 業務以傳統全文檢索索引為主,且短期內沒有向量搜尋規劃。 | 業務包含AI 搜尋、RAG等向量檢索情境,或希望為未來引入這些能力做好準備。 |
用戶端代碼改造成本 | 嚴格要求相容現有代碼。業務應用當前使用Elasticsearch Java high-level REST Client 7.13.4及以下版本,希望零代碼改動,實現平滑遷移。 | 接受代碼改造。願意將Elasticsearch用戶端切換為OpenSearch用戶端,以換取更優的長期收益。 |
效能與功能期望 | 滿足當前傳統搜尋的效能基準即可。 | 追求更優的查詢和寫入效能,需要更強的安全管控能力,並希望獲得OpenSearch社區的最新功能。 |
版本對比
下表對比了PolarSearch 1.x和3.x的核心規格:
特性 | PolarSearch 1.x | PolarSearch 3.x |
Lucene版本 | 8.10.1 | 10.3.1 |
Elasticsearch用戶端相容性 | 100%相容7.0.0 ~ 7.13.4的Elasticsearch Java high-level REST Client | 不相容 |
AWS OpenSearch核心相容性 | 100%相容OpenSearch 1.x核心。 | 100%相容OpenSearch 2.x以及3.x核心。 |
AWS OpenSearch用戶端相容性 | 用戶端版本相容性與AWS OpenSearch保持完全一致。詳細資料,請參見對應語言用戶端的相容性矩陣。 | |
向量檢索(k-NN) | 基礎支援,效能較低 | 完整支援,效能高 |
查詢效能 | Lucene 8.x基準 | 基於Lucene 10.x,索引和查詢效能更優 |
安全能力 | 基礎認證 | 增強認證與存取控制 |
適用情境 | Elasticsearch 7.x版本遷移 | 全新專案、AI情境 |
用戶端相容性
PolarSearch的兩個版本支援不同的用戶端庫,請根據您使用的PolarSearch版本選擇對應的用戶端。
PolarSearch 1.x用戶端
用戶端 | 推薦版本 | 說明 |
7.10.2 ~ 7.13.4 |
| |
Elasticsearch Java Low Level REST Client | 任意版本 | 穩定且靈活性高,但需自行處理 HTTP 要求與響應的序列化。 |
1.3.20 | 原生支援,推薦用於PolarSearch 1.x的新整合專案。 |
PolarSearch 3.x用戶端
用戶端 | 推薦版本 | 說明 |
3.3.0 | 原生支援。支援3.x的全部功能,包括向量檢索(k-NN)。 | |
Elasticsearch Java Low Level REST Client | 任意版本 | 穩定且靈活性高,但需自行處理 HTTP 要求與響應的序列化。 |
適用情境
從Elasticsearch遷移
如果您的應用當前使用Elasticsearch的Java high-level REST Client用戶端(版本7.0.0 ~ 7.13.4),PolarSearch的版本選擇取決於您是否進行業務代碼改造:
無需改造業務代碼:建議選擇PolarSearch 1.x。該版本在API層面相容Elasticsearch 7.x,可從Elasticsearch平滑遷移,無需改造業務代碼。您可以直接複用現有的查詢DSL、索引映射和用戶端配置。
需改造業務代碼:PolarSearch 3.x版本不相容Elasticsearch用戶端,遷移過程中,您需要修改業務應用中的用戶端庫並進行主要的編碼和重構工作。
AI搜尋與RAG
如果您的應用需要向量檢索、語義相似性匹配或檢索增強產生(RAG),建議選擇PolarSearch 3.x。內建的k-NN外掛程式支援儲存高維嵌入向量並執行近似最近鄰(ANN)查詢。典型應用情境包括:
大語言模型(LLM)應用的RAG知識庫。
文檔、圖片或多模態資料的語義檢索。
基於嵌入相似性的推薦系統。
全文檢索索引與向量檢索的混合查詢。
全新專案
如果您的專案沒有Elasticsearch歷史依賴,建議選擇PolarSearch 3.x。該版本搭載最新OpenSearch核心,具備更優的查詢效能和原生向量檢索能力,且支援周期更長。建議從一開始就使用OpenSearch原生用戶端,以充分利用3.x的全部功能。
傳統全文檢索索引
PolarSearch 1.x和3.x均支援全文檢索索引能力,包括倒排索引、分詞和相關性評分。如果您的業務以傳統全文檢索索引為主:
需要相容現有Elasticsearch Java high-level REST Client用戶端代碼時,選擇1.x。
追求更優的索引和查詢效能或高效能的向量檢索(k-NN)時,選擇3.x。
遷移建議
PolarSearch提供清晰的路徑,協助您將現有業務平滑遷移或升級至不同版本的PolarSearch。以下是兩種典型情境的操作步驟:
從Elasticsearch遷移至PolarSearch 1.x
此路徑適用於希望在遷移過程中最大限度減少代碼改動的Elasticsearch執行個體而設計,可以充分利用PolarSearch 1.x對舊版用戶端的相容性。
建立新叢集
在您的PolarDB叢集中建立一個新的PolarSearch 1.x搜尋節點。確認用戶端版本相容
檢查並確保您應用中使用的Elasticsearch Java high-level REST Client用戶端版本在7.0.0 ~ 7.13.4範圍內。如果版本過高(≥7.14.0),請進行降級。遷移資料
使用快照/恢複 (Snapshot/Restore) 或Reindex的方式,將現有的Elasticsearch叢集資料全量遷移至新的PolarSearch 1.x搜尋節點。測試核心API
將應用的串連指向新的PolarSearch 1.x搜尋節點,並測試所有的REST API調用是否相容,例如索引建立、文檔讀寫、搜尋以及彙總等。驗證業務功能和效能表現
全面測試您的應用程式,確保所有依賴搜尋的功能(如商品搜尋、日誌查詢等)均可正常工作,且返回結果與預期一致。逐步切換流量
通過負載平衡或應用程式層配置,逐步將線上流量從舊的Elasticsearch叢集切換至新的PolarSearch 1.x搜尋節點。下線舊執行個體
在確認新叢集穩定運行一段時間後,安全地下線舊的Elasticsearch執行個體,完成遷移。
從PolarSearch 1.x升級至3.x
此路徑適用於希望使用3.x版本新特性(如高效能向量檢索)的1.x版本而設計。請注意,此過程涉及用戶端的更換和代碼重構。
建立新叢集
在您的PolarDB叢集中建立一個新的PolarSearch 3.x 搜尋節點。遷移資料
使用Reindex的方式,將PolarSearch 1.x搜尋節點的資料全量遷移至新的PolarSearch 3.x搜尋節點。切換用戶端並重構代碼
將您應用中的用戶端庫從Elasticsearch Java high-level REST Client或舊版OpenSearch Java Client更換為與OpenSearch 3.x相容的原生用戶端(如OpenSearch Java Client 3.3.0)。此步驟通常涉及主要的編碼和重構工作。驗證業務功能
在完成代碼重構後,全面測試您的應用程式,確保所有功能在新用戶端和3.x核心上均可正常工作。驗證效能表現
重點關注搜尋、索引和彙總的效能,確保其符合或優於1.x版本的表現。逐步切換流量
通過負載平衡或應用程式層配置,逐步將線上流量從1.x搜尋節點切換至新的PolarSearch 3.x搜尋節點。下線舊搜尋節點
在確認新叢集穩定運行一段時間後,安全地下線舊的PolarSearch 1.x搜尋節點,完成升級。
常見問題
PolarSearch 3.x能否使用Elasticsearch用戶端?
不能。PolarSearch 3.x基於OpenSearch 3.x構建,不相容Elasticsearch用戶端庫。Elasticsearch Java high-level REST Client 7.14.0及以上版本和Java API Client 8.x均包含Elastic許可證校正,無法串連PolarSearch。請使用OpenSearch原生用戶端(OpenSearch Java Client 3.x及以上)串連PolarSearch 3.x。
為什麼Elasticsearch Java high-level REST Client 7.14.0及以上版本無法串連PolarSearch?
從7.14.0版本開始,Elasticsearch Java high-level REST Client增加了版本安全檢查,無法正確識別PolarSearch服務端,導致用戶端在啟動時拋出異常。
對於PolarSearch 1.x,請降級至7.0.0 ~ 7.13.4版本。
對於PolarSearch 3.x,請切換到OpenSearch原生用戶端。
PolarSearch 1.x是否支援向量檢索?
基礎支援,但不推薦。PolarSearch 1.x 的核心版本較舊,雖然提供了基礎的向量檢索功能,但效能較低,不適合用於對效能有要求的生產環境。如果您需要高效能的向量檢索,請務必選擇PolarSearch 3.x。