Elasticsearch版本和客戶端介紹


在項目開發過程中有多種Elasticsearch版本和連接客戶端可以選擇,那么他們有什么區別,各種類型的客戶端對Elasticsearch版本的兼容度如何?

Elasticsearch版本介紹

  • ES的版本管理機制:主版本.次版本.修正版本
    • 主版本一年一發,主要是重大升級和改進,涉及底層Lucence版本升級、性能改進、重大特性發布
    • 次版本2~3個月發一次,主要是少量特性功能發布(有阻斷變化和廢棄舊特性)及BUG修復
    • 修正版本2周左右發一次,不添加新功能,只修復BUG
  • 大版本主要功能特性差異,詳細參見ES發展史
    • 6.8.0/7.1.0后xpack 開源,基礎版不需要授權免費使用,包括: 安全、監控等
    • 多type支持
      • 5.6.X 默認支持多type,可以通過配置只支持一個type
      • 6.X 默認支持單一type,可以通過配置打開支持多type
      • 7.X 只允許單一type,即_doc

比如Elasticsearch-V7.2.1,7是主版本、2是次版本,1是修正版本,每個版本實現的功能、特性和解決的bug可以在官方的release-notes中查看。

客戶端分類

常見的客戶端有以下幾種:

  • Elastic Node Client

    ES從V0.9~V2.2 版本提供的客戶端,集成該客戶端的應用會以一個node節點的方式加入到ES集群,以集群節點的身份與ES通信。從V2.3版本開始移除,不提供這種類型的客戶端,該類型的客戶端在后續的ES版本中不可用。

  • Elastic Transport Client

    ES從V0.9~V7.X 版本提供的客戶端,該客戶端使用transport模塊(序列化協議)和遠程的ES集群通信,相比與node客戶端,transport client不加入ES集群,只通過transport模塊簡單的獲取各節點的狀態和綁定的transport地址,通過輪詢的方式和集群內的節點通信。從V7.0開始官方不建議使用,V8.0開始正式移除。官方推薦使用 Elastic Java High Level Rest Client 來代替。

  • Elastic Rest Client

    ES從V5.0~V5.4 版本提供的官方的輕量級的客戶端,使用restful API(http協議)和遠程ES集群通信,具有輕量、引入依賴少、兼容所有服務端ES版本的特點,只提供了最基本的API

  • Elastic Java Low Level Rest Client

    ES從V5.5 版本開始Rest Client 分為了兩類,原來的 Elastic Recst Client 改名叫作 Elastic Java Low Level Rest Client,基於HTTP協議通過restful API來和遠程ES通信,只提供了最基本最簡單的API,但是和之前一樣兼容所有的ES版本

  • Elastic Java High Level Rest Client

    ES從V5.5 版本開始Rest Client 分為了兩類,基於 Low Level Client 提供了更高層次得封裝,提供了更高級得API且和Elastic Transport Cliet 接口及參數保持一致。

  • JestClient

    開源社區提供得基於http協議的Rest 客戶端,目前支持ES版本V1.0~V6.X,基於http協議,官方宣稱接口及代碼設計比ES官方提供的Rest客戶端更簡潔、更合理,更好用,具有一定的ES服務端版本兼容性,但是更新速度不是很快,目前ES版本已經出到V7.9,但是JestClient只支持到V6.X

客戶端版本兼容性

  • Elasticsearch Node Client

    只支持ES 服務端V0.9~V2.2 ,且客戶端的版本需要和ES集群的服務版本完全一致,不具備跨版本的兼容性

  • Elastic Transport Client

​ 支持ES服務端 V0.9~V7.X ,從V8.0開始移除,不支持該客戶端。客戶端的主版本號必須和ES集群的主版本號 保持一致,次版本號可以不一致,但是次版本號不一致可能導致一些API不兼容。比如 Elastic Transport Client V5.x版本只能連接V5.X的ES集群,不能連接V6.X或者V7.X的集群

  • Elastic Rest Client 和 Elastic Java Low Level Rest Client

    從 V5.0開始提供,理論上兼容所有服務端ES版本

  • Elastic Java High Level Rest Client

    從V5.5開始提供,和Elastic Transport Client 一樣,客戶端的主版本號必須和ES集群的主版本號 保持一致,次版本號可以不一致,但是次版本號不一致可能導致一些API不兼容

  • JestClient

    目前支持ES V1.0~V6.X,根據官方提供的兼容列表:

    Jest Version Elasticsearch Version
    >= 6.0.0 6
    >= 5.0.0 5
    >= 2.0.0 2
    0.1.0 - 1.0.0 1
    <= 0.0.6 < 1

    根據該列表理解 JestClient V6.0.0 應該支持ES V1.0 ~ ESV6.X 所有的版本,具備支持跨版本的特性(待驗證

客戶端版提供的功能(需要進一步細化)

  • Elastic Node Client

    沒用過

  • Elastic Rest Client 和 Elastic Java Low Level Rest Client

    只提供了最基本的API,對於復雜的ES操作支持不夠,復雜操作需要寫較多java代碼

  • Elastic Transport Client 和 Elastic Java High Level Rest Client

    提供了較高的抽象,具備高級API,代碼編寫量加少

  • JestClient

    官方說提供了靈活、簡單、高級的API封裝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM