文档章节

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

bboss
 bboss
发布于 2017/11/17 10:50
字数 925
阅读 1707
收藏 13

    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);

高性能elasticsearch ORM开发库使用介绍:
https://my.oschina.net/bboss/blog/1556866

基于bboss es开发的统计查询效果图:   

 

 

 

 

 

   

© 著作权归作者所有

共有 人打赏支持
bboss

bboss

粉丝 110
博文 60
码字总数 68205
作品 8
长沙
程序员
私信 提问
搜索引擎的 ORM 库--bboss-elastic

bboss elasticsearch是一套基于query dsl语法操作和访问分布式搜索引擎elasticsearch的o/r mapping高性能开发库,底层基于es restful api。基于bboss elasticsearch,可以快速编写出访问和操...

bboss
2017/10/26
351
2
bboss elasticsearch v5.0.6.2 发布

The best elasticsearch highlevel java rest api-----bboss bboss elasticsearch v5.0.6.2 发布 v5.0.6.2新增功能及改进: 1.升级最新的bboss版本到5.0.5.7 2.新增bboss es rest boot模块,......

bboss
2018/04/29
519
1
Spring boot整合ElasticSearch案例分享

The best elasticsearch highlevel java rest api-----bboss Spring boot整合ElasticSearch HighLevel Rest Client案例分享,本文涉及内容 集成bboss es starter 单es集群整合 多es集群整合 ......

bboss
2018/06/26
0
3
Elasticsearch JDBC案例介绍

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3以后的版本可以通过jdbc操作es,该功能还在不断的完善当中,本文介绍es jdbc使用方法。 1.首先在工程中导入es ...

bboss
2018/09/30
0
0
bboss elasticsearch v5.0.6.0 发布

bboss elasticsearch v5.0.6.0 发布 bboss elasticsearch是一款高性能的elasticsearch orm java客户端框架,具备以下主要特性: 简单易用:基于xml配置和管理dsl,在dsl脚本中可以使用变量、...

bboss
2018/04/20
975
2

没有更多内容

加载失败,请刷新页面

加载更多

filebeat multiline配置(转)

使用filebeat5.0.1版本,用filebeat作为日志收集工具时: java日志格式需要多行匹配,在filebeat配置文件中添加: ### Multiline options # Mutiline can be used for log messages spanning...

xiaomin0322
25分钟前
1
0
ConstraintLayout的基本使用

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="ht......

SuShine
29分钟前
1
0
ActiveMQ多个消费者消费不均匀问题

如果客户端处理很慢的话,Broker会在之前发送消息的反馈之前,继续发送新的消息到客户端。如果客户端依旧很慢的话,没有得到确认反馈的消息会持续增长。在这种情况下,Broker有可能会停止发送...

编程SHA
30分钟前
1
0
【机器学习PAI实战】—— 玩转人工智能之综述

模型训练与在线预测服务、推荐算法四部曲、机器学习PAI实战、更多精彩,尽在开发者分会场 【机器学习PAI实战】—— 玩转人工智能之商品价格预测 【机器学习PAI实战】—— 玩转人工智能之你最...

阿里云云栖社区
34分钟前
1
0
根据国务院2019年劳动节假期安排五一放假四天 免费节假日api第一时间调整

根据国务院发布http://www.gov.cn/zhengce/content/2019-03/22/content_5375877.htm 以下为原文 国务院办公厅关于调整 2019年劳动节假期安排的通知 国办发明电〔2019〕3号 各省、自治区、直辖...

xiaogg
38分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部