Java ElasticSearch Client 选型

这篇具有很好参考价值的文章主要介绍了Java ElasticSearch Client 选型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、介绍

  • Elasticsearch 官方提供了很多版本的 Java 客户端,包含但不限于:

    • Transport 客户端
    • Java REST 客户端
    • Low Level REST 客户端
    • High Level REST 客户端
    • Java API 客户端
  • 非官方的 Java 客户端,包含但不限于:

    • Jest 客户端
    • BBoss 客户端
    • Spring Data Elasticsearch 客户端 …

二、版本

  • 注意:
    • 某些版本的 Elasticsearch 和 Spring Boot 可能不再受支持,因此请始终查看官方文档以获取详细信息。并且需要明确的是,更高版本的 Spring Data Elasticsearch 库不能与旧版本的 Elasticsearch 或 Spring Boot 合作使用,因此在升级时要小心。
    • 截至目前为止(2021年8月),Spring Boot 尚未正式宣布完全支持 Elasticsearch 8。但是,可以使用 Spring Data Elasticsearch 库和 RestHighLevelClient 客户端直接连接到 Elasticsearch 8 集群。
    • 虽然官方文档中没有提及 Elasticsearch 8 实际上不被 Spring Boot 支持,但 Elastic 公司建议仍然需要依赖于最新的 Spring Data Elasticsearch 存储库版本来确保与 Elasticsearch 8 的兼容性,并避免与旧版 Elastic Stack 环境产生冲突。
    • 另外,RestHighLevelClient 客户端已经支持 Elasticsearch 8,因此如果您打算在 Spring Boot 中使用较新版本的 Elasticsearch,则可以考虑使用该客户端。
  • 参考文档:
    • Spring Boot 2.5.x:Elasticsearch 版本为 7.13.3,参考文档
    • Spring Boot 2.4.x:Elasticsearch 版本为 7.10.x,参考文档
    • Spring Boot 2.3.x:Elasticsearch 版本为 7.6.x,参考文档
    • Spring Boot 2.2.x:Elasticsearch 版本为 6.8.x,参考文档
    • Spring Boot 2.1.x:Elasticsearch 版本为 6.7.x,参考文档
Elasticsearch 版本 Spring Boot 版本
7.14.0 2.4.X - 2.5.X
7.13.0 2.4.X - 2.5.X
7.12.0 2.4.X - 2.4.6
7.11.0 2.4.X - 2.4.3
7.10.2 2.3.X
7.9.3 2.3.X
7.8.1 2.3.X
7.7.1 2.2.X
7.6.2 2.2.X
7.5.2 2.2.X
7.4.2 2.1.X
7.3.2 2.1.X
7.2.1 2.1.X
7.1.1, 7.0.1 2.1.X

Spring Data Elasticsearch 版本 4.x:

Spring Data Elasticsearch 版本 Elasticsearch 版本 Spring Boot 版本
4.3.x 7.x 2.4.x
4.2.x 6.x, 7.x 2.1.x, 2.4.x
4.1.x 5.x, 6.x, 7.x 1.5.x, 2.x
4.0.x 2.x, 5.x, 6.x 1.5.x, 2.x

Spring Data Elasticsearch 版本 3.x:

Spring Data Elasticsearch 版本 Elasticsearch 版本 Spring Boot 版本
3.2.x 6.x, 7.x 2.1.x, 2.4.x
3.1.x 5.x, 6.x 1.5.x, 2.x
3.0.x 2.x, 5.x 1.5.x, 2.x

Spring Data Elasticsearch 版本 2.x:

Spring Data Elasticsearch 版本 Elasticsearch 版本 Spring Boot 版本
2.2.x 5.x, 6.x 1.5.x, 2.x
2.1.x 2.x, 5.x 1.3.x, 1.4.x
2.0.x 2.x, 5.x 1.3.x, 1.4.x

三、优缺点

详细的客户端发展史可以参考:elasticsearch客户端发展史
Java ElasticSearch Client 选型

客户端 优点 缺点 说明
TransportClient 使用Transport 接口进行通信,能够使用ES集群中的一些特性,性能最好 JAR包版本需与ES集群版本一致,ES集群升级,客户端也跟着升级到相同版本 过时产品,7版本之后不再支持
Java Low Level Rest Client 与ES版本之间没有关系,适用于作为所有版本ES的客户端 功能少 兼容所有版本
Java High Level Rest Client 使用最多,兼容性中等 使用需与ES版本保持一致,主版本必须相同,次要版本向后兼容 基于Low Level Rest Client,它提供了更多的接口。注意:7.15版本之后将被弃用
Elasticsearch Java API Client 最新的es客户端 文档少

四、扩展

  • TransportClient

    • 介绍:
      • TransportClient 是最早提供的 Elasticsearch 客户端 API 之一,用于连接到 Elasticsearch 节点并执行搜索、索引等操作。它基于远程传输协议(TCP)进行通信,可以对 Elasticsearch 请求、响应进行序列化和反序列化,因此效率较高。
    • 优点
      • 可以直接对 Elasticsearch 进行操作,无需通过 HTTP 协议进行传输。
      • 提供了完整的 Elasticsearch 操作API,可以执行比较复杂的搜索、索引等操作。
      • 同步和异步的客户端 API 都可用。
    • 缺点
      • 在集群环境中,需要为每个节点创建一个 TransportClient 对象,代价较高。
      • 由于使用的是 TCP 协议进行通信,在网络分区或节点故障时可能会导致请求失败。
      • 目前已经标记为过时,且将在未来版本中被移除。

  • Java Low Level Rest Client

    • 介绍:
      • Java Low Level Rest Client 是 Elasticsearch 提供的新一代低级别 REST 客户端,其根据 HTTP 协议与 Elasticsearch 进行通信,可以执行 Elasticsearch 集群中的所有操作。
    • 优点
      • 支持对 Elasticsearch 的完整操作,性能较好。
      • 可以与 Elasticsearch 集成并使用它所提供的读取和写入节点之间数据分布均衡负载的功能。
      • 与 Elasticsearch 版本保持同步更新。
    • 缺点
      • 客户端 API 功能相对上一个版本较少,需要自己封装和处理一些请求参数和响应结果。
      • 缺少连接池,需要手动实现重连、连接失败时的重试处理等。

  • Java High Level Rest Client
    文章来源地址https://www.toymoban.com/news/detail-417447.html

    • 介绍:
      • Java High Level Rest Client 是基于 Java Low Level Rest Client 开发的高级别 REST 客户端,其在低级 REST 客户端之上提供了更加方便的使用方式。除了基本的 Elasticsearch 操作外,还添加了索引模板、刷新、映射管理等更高级别的操作。
    • 优点
      • 提供更加简单易用的 Elasticsearch 操作API,减少了必须编写的代码量。
      • 解决了 Java Low Level Rest Client 缺少连接池、请求失败无法自动重构等问题。
      • 与 Elasticsearch 版本保持同步更新。
    • 缺点
      • 相比 TransportClient 或 Java Low Level Rest Client,Java High Level Rest Client 的性能略差,因为提供了更多的抽象层。

五、建议

  • 如果当前是:7.X 版本且不考虑升级,那就 High Level REST 客户端。
  • 如果当前是:8.X 版本,那就 Elasticsearch Java API 客户端。
  • 如果当前是:5.X、6.X 版本,推荐尽早升级集群版本。

到了这里,关于Java ElasticSearch Client 选型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch 7.17 Java Client Api

    Elasticsearch官方建议使用新版的Java Api Client替代原有的Rest客户端,这篇文章会简单讲解 新版api的使用。 The Elasticsearch Java API Client is an entirely new client library that has no relation to the older High Level Rest Client (HLRC). This was a deliberate choice to provide a library that is independent from the Elasticsearc

    2024年02月11日
    浏览(42)
  • Elasticsearch8.x版本Java客户端Elasticsearch Java API Client中常用API练习

    在Es7.15版本之后,es官方将它的高级客户端RestHighLevelClient标记为弃用状态。同时推出了全新的java API客户端Elasticsearch Java API Client,该客户端也将在Elasticsearch8.0及以后版本中成为官方推荐使用的客户端。 Elasticsearch Java API Client支持除Vector title search API和Find structure API之外的所有

    2024年04月11日
    浏览(46)
  • springboo整合elasticSearch8 java client api

    官方文档: https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/connecting.html gradle maven 若无密码,可以使用下面方式: 使用es自动设置的mapping 设置mappings Doc是自定义实体类 比如 select * from doc where user_id in(1,2,3); 方式一: 方式二: 方式三:

    2024年02月13日
    浏览(45)
  • Elasticsearch Java API Client 8.x使用方式

    客户端的变化 众所周知,Elasticsearch是基于Lucene的,提供了更高层次的封装、分布式方面的扩展,以及REST API来方便使用,我们先来看看java client的变化: 从图中可以看成,在8.x版本中,Elasticsearch提供了全新的Java API Client,用来代替之前广为使用的High Level Client,根据官网说法

    2024年02月07日
    浏览(46)
  • Elasticsearch:从 Java High Level Rest Client 切换到新的 Java API Client

    作者:David Pilato 我经常在讨论中看到与 Java API 客户端使用相关的问题。 为此,我在 2019 年启动了一个 GitHub 存储库,以提供一些实际有效的代码示例并回答社区提出的问题。 从那时起,高级 Rest 客户端 (High Level Rest Cliet - HLRC) 已被弃用,并且新的 Java API 客户端已发布。 为了

    2024年03月19日
    浏览(49)
  • Elasticsearch Java REST Client 批量操作(Bulk API)

    上一篇:Elasticsearch Java REST Client Term Vectors API 下一篇:Elasticsearch Java REST Client Search APIs 查询 BulkRequest可用于使用单个请求执行多个索引、更新和/或删除操作。 它需要至少一个操作添加到 Bulk 请求中: multiGetAPI 在单个 http 请求中并行执行多个请求get 。 MultiGetRequest,添加 `M

    2024年02月11日
    浏览(49)
  • SpringBoot整合ElasticSearch之Java High Level REST Client

    1 搭建SpringBoot工程 2 引入ElasticSearch相关坐标。 3 编写核心配置类 编写核心配置文件: 这里可以不写在配置,可以直接写在代码中,只是一般都是写在配置文件中 编写核心配置类 4 测试客户端对象 记得把maven的单元测试关了 注意:使用@Autowired注入RestHighLevelClient 如果报红线

    2024年02月05日
    浏览(52)
  • SpringBoot整合最新Elasticsearch Java API Client 7.16教程

        最新在学习SpringBoot整合es的一些知识,浏览了网上的一些资料,发现全都是es很久之前的版本了,其中比较流行的是Java REST Client的High Level Rest Client版本,但是官方文档的说明中,已经申明该版本即将废弃,不再进行维护了。可见:官方文档     目前官方推荐的版本是

    2023年04月24日
    浏览(39)
  • 最新版ES8的client API操作 Elasticsearch Java API client 8.0

    作者:ChenZhen 本人不常看网站消息,有问题通过下面的方式联系: 邮箱:1583296383@qq.com vx: ChenZhen_7 我的个人博客地址:https://www.chenzhen.space/🌐 版权:本文为博主的原创文章,本文版权归作者所有,转载请附上原文出处链接及本声明。📝 如果对你有帮助,请给一个小小的s

    2024年02月04日
    浏览(39)
  • Elasticsearch RestHighLevelClient 已标记为被弃用 它的替代方案 Elasticsearch Java API Client 的基础教程及迁移方案

    在Elasticsearch7.15版本之后,Elasticsearch官方将它的高级客户端 RestHighLevelClient 标记为弃用状态。同时推出了全新的Java API客户端 Elasticsearch Java API Client ,该客户端也将在Elasticsearch8.0及以后版本中成为官方推荐使用的客户端。 Elasticsearch Java API Client 支持除 Vector tile search API 和

    2024年01月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包