• 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封装

  • 相关阅读:
    coder的脚印
    Mysql
    MSDos
    Windows Develop
    Eclipse 使用总结
    DBA常用SQL
    SSH总结
    Unity3D协程
    yield的作用
    UGUI优化
  • 原文地址:https://www.cnblogs.com/wangzhen3798/p/13561211.html
Copyright © 2020-2023  润新知