bboss es对比直接使用es客户端的优势

简介: bboss es和直接使用es客户端的优点到底在哪里呢?下面做个简单的阐述:     es官方客户端有两种:restclient和transprortclient,前者是基于restful的,直接操作各种restful api和query dsl,比较简单,没有orm功能;后者是基于...

bboss es和直接使用es客户端的优点到底在哪里呢?下面做个简单的阐述:

    es官方客户端有两种:restclient和transprortclient,前者是基于restful的,直接操作各种restful api和query dsl,比较简单,没有orm功能;后者是基于java api封装的orm框架,封装比较死板,不太灵活,兼容性差,不能像调用restful那样直接操作query dsl,所以也不能直接针对query dsl,在head插件或者kibana里面调试和调优query dsl,写出了query dsl还要想方设法转换成对应的java api的调用方式。

    相比较而然,bboss es融合了es官方提供的两种方式(restful和transprortclient)的功能,涵盖两方面能力,提供了(orm和restful,直接使用query dsl),是一个综合型的es客户端,主要优势如下:

  1. bboss es底层直接基于es 的http restful协议,因此支持所有的es的restful功能,采用连接池技术管理http连接,高效;
  2. 支持x-pack安全认证;
  3. 支持集群负载和容灾以及节点自动发现;
  4. 提供了丰富的orm api(增删改查、批量增删改,聚合统计等),api简洁易用;
  5. 基于xml配置文件管理query dsl脚本,在query dsl的基础上,提供了简单强大的动态控制语法结构,支持if/else,if/elseif/else,foreach循环控制结构,语法风格非常类似于mybatis管理sql语句的语法风格,但是更加简洁高效;
  6. 将query dsl脚本从java代码剥离,提供query dsl热加载功能,实时修改实时生效,开发调试效率高,可以与es head和kibana的deptool配合使用;
  7. 开发和配置也非常简单,只需要引入bboss es的maven坐标或者gradle坐标,无需依赖es官方的jar包,几乎兼容es的各个版本(向前、向后兼容,前提是编写query dsl脚本要兼容);
  8. bboss es即提供高阶的orm api,也提供了低阶原生restful以及java transport的支持,可以方便地根据自己的实际需要选用。
  9.     原生的restful的使用,bboss es直接发http restful请求,可以指定http post,get,delete,put方法,返回json报文,有问题直接抛异常。相关示例在新闻《高性能Elasticsearch ORM开发库bboss es 5.0.3.7.8发布》中都有介绍,而且除了返回string类型的json报文,还可以指定ResponseHandler回调处理接口,自行封装成自己想要的对象结构,例如: 
    Map<String,Object> state = 
    clientUtil.executeHttp("_cluster/state",ClientInterface.HTTP_GET,
                                           new MapResponseHandler());//返回map结构
     

    10.对于响应的异常处理,如果restful返回异常报文,都会以ElasticsearchException抛出到应用端。

show me the code:

 

//一个完整的批量添加和修改索引文档的案例  
SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd");
		String date = format.format(new Date());
		ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil();
		List<Demo> demos = new ArrayList<>();
		Demo demo = new Demo();
		demo.setDemoId(2l);
		demo.setAgentStarttime(new Date());
		demo.setApplicationName("blackcatdemo2");
		demo.setContentbody("this is content body2");
		demos.add(demo);

		demo = new Demo();
		demo.setDemoId(3l);
		demo.setAgentStarttime(new Date());
		demo.setApplicationName("blackcatdemo3");
		demo.setContentbody("this is content body3");
		demos.add(demo);

		//批量创建文档
		String response = clientUtil.addDateDocuments("demo",//索引表
				"demo",//索引类型
				demos);

		System.out.println("addDateDocument-------------------------");
		System.out.println(response);

		//批量更新文档
		demo.setContentbody("updated");
		response = clientUtil.updateDocuments("demo-"+date,"demo",demos);
		System.out.println("updateDateDocument-------------------------");

		System.out.println(response);
        //获取索引文档,json格式
		response = clientUtil.getDocument("demo-"+date,//索引表
				"demo",//索引类型
				"2");//文档id
		System.out.println("getDocument-------------------------");
		System.out.println(response);
        //获取索引文档,返回Demo对象类型
		demo = clientUtil.getDocument("demo-"+date,//索引表
				"demo",//索引类型
				"3",//文档id
				Demo.class);
    基于bboss es开发的统计查询效果图:

 

   

 

 

 

 

 
   
目录
相关文章
|
移动开发 开发框架 .NET
【机组】基于FPGA的32位算术逻辑运算单元的设计(EP2C5扩充选配类)
【机组】基于FPGA的32位算术逻辑运算单元的设计(EP2C5扩充选配类)
259 0
|
消息中间件 数据库 RocketMQ
分布式事务常见解决方案
分布式事务常见解决方案
2431 0
|
11月前
|
算法 前端开发 API
开源轻量级IM框架MobileIMSDK的鸿蒙NEXT客户端库已发布
MobileIMSDK-鸿蒙端是一套基于鸿蒙Next(纯血鸿蒙)系统的IM即时通讯客户端库: 1)超轻量级(编译后库文件仅50KB)、无任何第3方库依赖(开箱即用); 2)纯ArkTS编写、无Native代码、高度提炼、简单易用; 3)基于鸿蒙Next标准WebSocket API,简洁优雅; 4)可运行于任何支持鸿蒙Next的平台; 5)能与 MobileIMSDK的各种客户端完美互通; 6)可应用于鸿蒙Next中的消息推送、客服聊天、企业OA、IM等场景。
359 45
|
弹性计算 测试技术 持续交付
阿里云云效产品使用合集之如何进行自动化测试
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
11月前
|
XML Java API
Spring Boot集成MinIO
本文介绍了如何在Spring Boot项目中集成MinIO,一个高性能的分布式对象存储服务。主要步骤包括:引入MinIO依赖、配置MinIO属性、创建MinIO配置类和服务类、使用服务类实现文件上传和下载功能,以及运行应用进行测试。通过这些步骤,可以轻松地在项目中使用MinIO的对象存储功能。
1655 5
|
存储 前端开发 Java
springboot整合最新版minio和minio的安装(完整教程,新人必看)
本文详细介绍了如何使用Docker安装配置最新版的MinIO,并展示了如何在Spring Boot应用中整合MinIO以及如何通过前端进行文件上传测试。
1605 3
springboot整合最新版minio和minio的安装(完整教程,新人必看)
|
消息中间件 Java Kafka
Java中的消息队列与事件总线设计
Java中的消息队列与事件总线设计
|
JavaScript
基于Vue3的Uniapp实训项目|一家鲜花店
基于Vue3的Uniapp实训项目|一家鲜花店
207 0
|
Java API Spring
Spring Boot中如何实现邮件发送功能
Spring Boot中如何实现邮件发送功能
1018 0
|
缓存 自然语言处理 Java
Elasticsearch 断路器报错了,怎么办?
Elasticsearch 断路器报错了,怎么办?