es相关的官方客户端与spring客户端对比与介绍

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

1. 客户端版本种类

  1. es提供的

    1. TransportClient
      1. 传统的客户端,基于TCP传输协议与Elasticsearch通信。
      2. 已经被弃用,不推荐使用。
        1. 适用于Elasticsearch 5.x及以前的版本
        2. 因为Elasticsearch 6.x及以上版本已不再支持TCP Transport协议,TransportClient无法连接Elasticsearch集群。
    2. RestHighLevelClient
      1. 是一个高级的REST客户端,主要用于与Elasticsearch集群通信。
      2. 基于Java Low Level REST Client构建,提供更高级的API,隐藏底层细节。
      3. 主要用于Kibana和Logstash等工具。
      4. RestHighLevelClient适用于Elasticsearch 6.2.0及以上版本。
  2. spring提供的

    1. ES存储库操作:简单的CRUD
      1. 特点
        1. 当你需要进行简单的CRUD操作(创建、读取、更新、删除文档)时,使用ES存储库操作是一个不错的选择。
        2. 这是因为Spring Data Elasticsearch会自动生成存储库接口的实现,从而使你的代码更简洁、易于理解。
    2. ElasticsearchTemplate
      1. 基于ElasticsearchRestTemplate封装,提供更高级的API,如各种CRUD操作。
      2. 也需要依赖Spring Framework。
    3. ElasticsearchRestTemplate
      1. 是一个Spring的RestTemplate的扩展,用于与Elasticsearch RESTful API交互。
      2. 基于Spring的RestTemplate,提供Elasticsearch的自动化JSON序列化和反序列化。
      3. 需要依赖Spring Framework。
    4. ElasticsearchOperations:接口实现
    5. 使用选择
      1. 如果需要更多spring集成相关的功能,则使用ElasticsearchTemplate。
      2. 如果需要直接访问Elasticsearch RESTful接口,则使用ElasticsearchRestTemplate。
      3. 性能和功能上,ElasticsearchTemplate略胜一筹。

2. spring的相关操作客户端

2.1 ES存储库操作:简单的CRUD

  1. 特点

    1. 当你需要进行简单的CRUD操作(创建、读取、更新、删除文档)时,使用ES存储库操作是一个不错的选择。
    2. 这是因为Spring Data Elasticsearch会自动生成存储库接口的实现,从而使你的代码更简洁、易于理解。
  2. 核心

    • 简单的crud操作
    • 不支持复杂的查询检索
  3. 使用步骤

    1. 实体类

      @Document(indexName = "encrypt_log", type = "encrypt_log")
      public class EncryptLogEntity {
        
          //对应字段
          private String srcIp;
          private String dstIp;
          //...
          
          // getters and setters
      }
      
      
    2. 创建ElasticsearchRepository接口

      public interface EncryptLogRepository extends ElasticsearchRepository<EncryptLogEntity, String> {
          
      }
      
    3. 对应的服务中注入接口,并编写方法

      @Autowired
      private MyDocumentRepository myDocumentRepository;
      
      // 创建文档
      myDocumentRepository.save(document);
      
      // 读取文档
      MyDocument document = myDocumentRepository.findById(id).orElse(null);
      
      // 更新文档
      myDocumentRepository.save(updatedDocument);
      
      // 删除文档
      myDocumentRepository.deleteById(id);
      

2.2 ElasticsearchTemplate:复杂的操作:增删改查

  1. 特点

    1. 当你需要执行更复杂的查询、聚合操作,或者需要使用一些特定的Elasticsearch功能时,使用ElasticsearchTemplate可能是一个更好的选择。
    2. 基于 Transport Client与ES交互。
  2. 核心

    • 更复杂的查询、聚合操作 -> ElasticsearchTemplate
    • 需要更简单、方便地集成ES时,可以使用ElasticsearchTemplate。
  3. 使用

    @Autowired
    private ElasticsearchTemplate elasticsearchTemplate;
    
    // 构建查询
    QueryBuilder queryBuilder = QueryBuilders.matchQuery("title", "example");
    
    // 执行查询
    SearchHits<MyDocument> searchHits = elasticsearchTemplate.search(new NativeSearchQueryBuilder()
            .withQuery(queryBuilder)
            .build(), MyDocument.class);
    
    
  4. 简单查询例子

    @Autowired
    private ElasticsearchTemplate esTemplate;
    
    List<Map<String, Object>> documents = ...
    esTemplate.bulkIndex(documents);
    

2.3 ElasticsearchRestTemplate:跨节点的搜索查询

  1. 特点

    • 适用于更复杂的查询操作
  2. 情景

    • 需要更高级ES功能时,使用ElasticsearchRestTemplate。
    • 需要更高级ES功能时,使用ElasticsearchRestTemplate。
  3. 样例

    @Autowired
    private ElasticsearchRestTemplate esRestTemplate;
    
    List<Map<String, Object>> documents = ...
    esRestTemplate.bulkIndex(documents, Map.class);  
    
    SearchQuery searchQuery = new NativeSearchQueryBuilder()
         .withQuery(matchQuery("name", "spring"))
         .build();
    List<Map> results = esRestTemplate.search(searchQuery, Map.class)
         .getContent();
    

2.4 ElasticsearchTemplate和ElasticsearchRestTemplate主要的区别在于

  1. 底层实现:

    • ElasticsearchTemplate 底层使用 Elasticsearch Java API 实现。
    • ElasticsearchRestTemplate 底层使用 Elasticsearch Rest API 实现。
  2. 使用范围:

    • ElasticsearchTemplate 只能在内部使用,不支持跨节点操作。
    • ElasticsearchRestTemplate 支持跨节点操作。
  3. 功能:

    • ElasticsearchTemplate 功能更全面,支持多种操作,如索引、搜索、删除等。
    • ElasticsearchRestTemplate 主要用于搜索。
  4. 性能:

    • ElasticsearchTemplate 性能更高,不需要经过 HTTP 请求。
    • ElasticsearchRestTemplate 需要通过 HTTP 请求,性能相对较低。
  5. 复杂度:

    • ElasticsearchTemplate 复杂度较高,需要深入理解 Elasticsearch Java API。
    • ElasticsearchRestTemplate 复杂度较低,只需要理解 Elasticsearch 的 REST API。
  6. 总的来说:

    • 如果只在单个节点上操作 Elasticsearch,优先选择 ElasticsearchTemplate。
    • 如果需要跨节点操作,或者为了简单起见,可以选择 ElasticsearchRestTemplate。

2.4 ElasticsearchOperations:接口

  1. 特点

    • ElasticsearchOperations是一个接口,代表了基础的Elasticsearch操作。
    • ElasticsearchTemplate是ElasticsearchOperations的一个实现。
  2. 功能

    1. ElasticsearchOperations定义了基本的Elasticsearch操作,如插入、查询、删除等。
    2. ElasticsearchTemplate实现了ElasticsearchOperations接口,提供了更多功能,例如:
      • 批量操作
      • 分页查询
      • 对复杂对象进行转换
      • 映射管理
      • 索引管理
  3. 使用

    1. 一般情况下,程序直接使用ElasticsearchTemplate。

    2. 在测试中,可以使用ElasticsearchOperations接口,达到分离依赖的目的。

3. 不同版本的依赖及对应方法的选择

  1. 进入spring对应的官网

  2. 随便找一个api——找到历史文档及版本对应版本对应

    es spring类型,elasticsearch,java,springboot

  3. 然后找到对应的官方操作客户端方法

    es spring类型,elasticsearch,java,springboot文章来源地址https://www.toymoban.com/news/detail-788398.html

4. 总结

  1. es客户端
    1. TransportClient :已过时
    2. RestHighLevelClient:es官方推荐的版本,但有时候在spring中被废弃
  2. spring客户端
    1. ES存储库
      • 适用于简单的CRUD操作
      • 可阅读性强,操作编写难度麻烦
    2. ElasticsearchTemplate
      • 复杂的增删改查操作
      • 单节点中使用
    3. ElasticsearchRestTemplate
      • 多节点,和相对于ElasticsearchTemplate 更便捷的方法调用
      • 更加多样的查询封装方法
    4. ElasticsearchOperations
      • 是一个接口,使用的较少

到了这里,关于es相关的官方客户端与spring客户端对比与介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 吾辈楷模!国人开源的Redis客户端被Redis官方收购了!

    不久前开源圈子里的一则消息在网上引起了一阵关注和讨论。 一个由国人开发者所打造的开源项目被 Redis 公司官方给收购了,作者自己也发了动态,表示感谢项目9年以来的陪伴,同时也希望她未来一切都好。 这个开源项目的名字叫做:ioredis,相信不少小伙伴也用过。 目前

    2024年03月15日
    浏览(23)
  • Scala连接ES客户端

    大家好,我是楚生辉,在未来的日子里我们一起来学习大数据相关的技术,一起努力奋斗,遇见更好的自己! 本文详细的介绍了如何使用Scala语言连接上Elasticsearch客户端,有需要的小伙伴可以自行获取与学习~ 使用方法 写入ES中,就要规划,是写入到一个索引中,还是分割索

    2024年01月21日
    浏览(15)
  • ES客户端RestHighLevelClient的使用

    默认情况下,ElasticSearch使用两个端口来监听外部TCP流量。 9200端口:用于所有通过HTTP协议进行的API调用。包括搜索、聚合、监控、以及其他任何使用HTTP协议的请求。所有的客户端库都会使用该端口与ElasticSearch进行交互。 9300端口:是一个自定义的二进制协议,用于集群中各

    2024年02月03日
    浏览(15)
  • java用es客户端创建索引

    先用java创建esClient 创建es索引模板 新建索引 批量插入数据 1.先批量生成数据 2批量导入方法

    2024年02月11日
    浏览(18)
  • 【ES实战】ES创建Transports客户端时间过长分析

    2023年10月19日 在创建ES Transport客户端的时,当出现以下场景时,影响连接速度。 使用ES Transport 客户端创建与集群的链接。 连接地址里面有不存在的IP 在增加ES节点时,采用逐个增加的方式 整个建立链接的过程会非常耗时。 采用jar依赖如下 创建连接代码如下 输出结果 是否可

    2024年02月07日
    浏览(14)
  • ES查询客户端初始化(RestHighLevelClient)

    另外,如果说把es当成一个数据库使用,可以看下开源项目easy-es,操作更方便。文档地址:快速开始 | Easy-Es

    2024年02月11日
    浏览(14)
  • 奇安信天擎Linux客户端部署相关事项

    1)通过Windows平台浏览器访问天擎客户端在线下载页面:http://控制中心IP:80,获取在线安装包 2)在Linux系统下,直接使用wget命令下载在线安装包。 wget “http://控制台IP/download/setup/installer-linuxs(控制台IP _80).sh” 注意端口,不同版本可能不一样 Linux 默认服务接入端口为 30081(或

    2024年02月03日
    浏览(19)
  • es最大相似度检索(原生与java客户端)

    原生rest: 对“不好”进行分词, \\\"operator\\\": \\\"and\\\" 意思是同时满足。 结果: java RestHighLevelClient

    2024年02月11日
    浏览(15)
  • 袁庭新ES系列15节|Elasticsearch客户端基础操作

    上一章节我们介绍了搭建Elasticsearch集群相关的知识。那么又该如何来操作Elasticsearch集群呢?在ES官网中提供了各种语言的客户端,我们在项目开发过程中有多种Elasticsearch版本和连接客户端可以选择,那么他们有什么区别?这一章节袁老师带领大家来学习Elasticsearch客户端相关

    2024年04月25日
    浏览(15)
  • Redis客户端介绍

    redis安装完成后有自带的命令行客户端,即redis-cli,使用方式如下 options ——参数 -h 127.0.0.1 :指定要连接的redis节点的ip地址,默认值127.0.0.1 -p 6379 :指定要连接的redis节点的端口,默认值6379 -a xxxxxx :指定redis的访问密码 … commonds ——redis的操作命令 ping :心跳测试,服务器

    2024年02月06日
    浏览(17)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包