PolarSearch版本選型指南

更新時間:
Copy as MD

PolarSearch提供1.x3.x兩個主要版本,基於不同的OpenSearch核心構建。本文從核心特性、用戶端相容性和適用情境三個維度對比兩個版本的差異,協助您根據業務需求選擇合適的版本。

選型概述

PolarSearch的版本選擇,核心是在相容性與效能之間做出權衡。在添加搜尋節點時,您需要根據業務的長期規劃和對代碼改造成本的接受度,在1.x3.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.x3.x的核心規格:

特性

PolarSearch 1.x

PolarSearch 3.x

Lucene版本

8.10.1

10.3.1

Elasticsearch用戶端相容性

100%相容7.0.0 ~ 7.13.4Elasticsearch 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用戶端

用戶端

推薦版本

說明

Elasticsearch Java high-level REST Client

7.10.2 ~ 7.13.4

  • 功能完整,與現有Elasticsearch業務相容性好。

  • 7.14.0及以上版本增加了版本安全檢查,不相容PolarSearch。

Elasticsearch Java Low Level REST Client

任意版本

穩定且靈活性高,但需自行處理 HTTP 要求與響應的序列化。

OpenSearch Java Client

1.3.20

原生支援,推薦用於PolarSearch 1.x的新整合專案。

PolarSearch 3.x用戶端

用戶端

推薦版本

說明

OpenSearch Java Client

3.3.0

原生支援。支援3.x的全部功能,包括向量檢索(k-NN)。

Elasticsearch Java Low Level REST Client

任意版本

穩定且靈活性高,但需自行處理 HTTP 要求與響應的序列化。

適用情境

Elasticsearch遷移

如果您的應用當前使用ElasticsearchJava 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.x3.x均支援全文檢索索引能力,包括倒排索引、分詞和相關性評分。如果您的業務以傳統全文檢索索引為主:

  • 需要相容現有Elasticsearch Java high-level REST Client用戶端代碼時,選擇1.x

  • 追求更優的索引和查詢效能或高效能的向量檢索(k-NN)時,選擇3.x

遷移建議

PolarSearch提供清晰的路徑,協助您將現有業務平滑遷移或升級至不同版本的PolarSearch。以下是兩種典型情境的操作步驟:

Elasticsearch遷移至PolarSearch 1.x

此路徑適用於希望在遷移過程中最大限度減少代碼改動的Elasticsearch執行個體而設計,可以充分利用PolarSearch 1.x對舊版用戶端的相容性。

  1. 建立新叢集
    在您的PolarDB叢集中建立一個新的PolarSearch 1.x搜尋節點。

  2. 確認用戶端版本相容
    檢查並確保您應用中使用的Elasticsearch Java high-level REST Client用戶端版本在7.0.0 ~ 7.13.4範圍內。如果版本過高(≥7.14.0),請進行降級。

  3. 遷移資料
    使用快照/恢複 (Snapshot/Restore) 或Reindex的方式,將現有的Elasticsearch叢集資料全量遷移至新的PolarSearch 1.x搜尋節點。

  4. 測試核心API
    將應用的串連指向新的PolarSearch 1.x搜尋節點,並測試所有的REST API調用是否相容,例如索引建立、文檔讀寫、搜尋以及彙總等。

  5. 驗證業務功能和效能表現
    全面測試您的應用程式,確保所有依賴搜尋的功能(如商品搜尋、日誌查詢等)均可正常工作,且返回結果與預期一致。

  6. 逐步切換流量
    通過負載平衡或應用程式層配置,逐步將線上流量從舊的Elasticsearch叢集切換至新的PolarSearch 1.x搜尋節點。

  7. 下線舊執行個體
    在確認新叢集穩定運行一段時間後,安全地下線舊的Elasticsearch執行個體,完成遷移。

PolarSearch 1.x升級至3.x

此路徑適用於希望使用3.x版本新特性(如高效能向量檢索)的1.x版本而設計。請注意,此過程涉及用戶端的更換和代碼重構。

  1. 建立新叢集
    在您的PolarDB叢集中建立一個新的PolarSearch 3.x 搜尋節點。

  2. 遷移資料
    使用Reindex的方式,將PolarSearch 1.x搜尋節點的資料全量遷移至新的PolarSearch 3.x搜尋節點。

  3. 切換用戶端並重構代碼
    將您應用中的用戶端庫從Elasticsearch Java high-level REST Client或舊版OpenSearch Java Client更換為與OpenSearch 3.x相容的原生用戶端(如OpenSearch Java Client 3.3.0)。此步驟通常涉及主要的編碼和重構工作。

  4. 驗證業務功能
    在完成代碼重構後,全面測試您的應用程式,確保所有功能在新用戶端和3.x核心上均可正常工作。

  5. 驗證效能表現
    重點關注搜尋、索引和彙總的效能,確保其符合或優於1.x版本的表現。

  6. 逐步切換流量
    通過負載平衡或應用程式層配置,逐步將線上流量從1.x搜尋節點切換至新的PolarSearch 3.x搜尋節點。

  7. 下線舊搜尋節點
    在確認新叢集穩定運行一段時間後,安全地下線舊的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。