bboss-elasticsearch顶级搜索引擎的 ORM 库

联合创作 · 2023-09-29 03:26

The best elasticsearch highlevel java rest api-----bboss


bboss是一套基于query dsl语法操作和访问分布式搜索引擎Elasticsearch/Opensearch的o/r mapping高性能开发库,底层直接基于 http 协议操作和访问Elasticsearch、Opensearch。基于bboss,可以快速编写出访问和操作Elasticsearch/Opensearch的程序代码,简单、高效、可靠、安全。



 


快速开始bboss


https://esdoc.bbossgroups.com/#/quickstart


bboss兼容性


兼容性:bboss兼容所有版本Elasticsearch、Spring boot,基于bboss开发的代码,可以无缝对接不同版本的Elasticsearch、Opensearch、Spring boot










































bboss Elasticsearch spring boot
all 1.x 1.x,2.x
all 2.x 1.x,2.x
all 3.x 1.x,2.x
all 5.x 1.x,2.x
all 6.x 1.x,2.x
all 7.x 1.x,2.x

Opensearch兼容性:1.x,2.x,+


jdk兼容性:jdk 1.7+


典型应用场景



一行代码插入/修改


//添加/修改文档,如果文档id存在则修改,不存在则插入



clientUtil.addDocument("agentinfo",//索引名称
agentInfo);//需添加/修改的索引数据对象

一行代码分页/高亮检索



ESDatas<TAgentInfo> data //ESDatas为查询结果集对象,封装了返回的当前查询的List<TAgentInfo>结果集和符合条件的总记录数totalSize
= clientUtil.searchList("trace-*/_search",//查询操作,查询indices trace-*中符合条件的数据
"queryServiceByCondition",//通过名称引用配置文件中的query dsl语句
traceExtraCriteria,//查询条件封装对象
TAgentInfo.class);//指定返回的po对象类型,po对象中的属性与indices表中的文档filed名称保持一致
//获取当前页结果对象列表
List<TAgentInfo> demos = data.getDatas();
//获取总记录数
long totalSize = data.getTotalSize();

根据文档id获取文档



Demo demo = clientUtil.getDocument("demo",//索引表
"2",//文档id
Demo.class);//指定返回对象类型

 根据字段直接获取文档



String document = clientInterface.getDocumentByField("demo",//索引名称
"applicationName.keyword",//字段名称
"blackcatdemo2");//字段值
Map document = clientInterface.getDocumentByField("demo","applicationName.keyword","blackcatdemo2",Map.class);
DemoPo document = clientInterface.getDocumentByField("demo","applicationName.keyword","blackcatdemo2",DemoPo.class);

一行代码根据字段值进行分页查找



ESDatas<Map> documents = clientInterface.searchListByField("demo",//索引名名称
"applicationName.keyword", //检索字段名称
"blackcatdemo2",//检索值
Map.class, //返回结果类型,可以是po对象类型也可以是map类型
0, //分页起始位置
10); //分页每页记录数
//获取当前页结果对象列表
List<Map> demos = data.getDatas();
//获取匹配的总记录数
long totalSize = data.getTotalSize();

一行代码删除文档



clientUtil.deleteDocument("demo",//索引表
"2");//文档id

一行代码批量删除文档



//批量删除文档
clientUtil.deleteDocuments("demo",//索引表
new String[]{"2","3"});//批量删除文档ids

api方法可以指定特定的Elasticsearch 集群进行操作


所有 api 可以直接指定 数据源操作,指哪打哪,下面展示了在一段代码里面同时操作两个Elasticsearch集群功能:datasourceName1和datasourceName2



ESDatas<Demo> esDatas1 =
clientUtil.searchListWithCluster(datasourceName1,//指定操作的Elasticsearch集群数据源名称
"demo1/_search",//demo为索引表,_search为检索操作action
"searchDatas",//esmapper/demo7.xml中定义的dsl语句
params,//变量参数
Demo.class);//返回的文档封装对象类型

ESDatas<Demo> esDatas2 =
clientUtil.searchListWithCluster(datasourceName2,//指定操作的Elasticsearch集群数据源名称
"demo2/_search",//demo为索引表,_search为检索操作action
"searchDatas",//esmapper/demo7.xml中定义的dsl语句
params,//变量参数
Demo.class);//返回的文档封装对象类型

datasourceName1和datasourceName2 可是两个相同版本的Elasticsearch,亦可以是两个不同版本的Elasticsearch,bboss在兼容性方面是毋庸置疑的。


快速集成,导入BBoss maven坐标:quickstart文档


其他特点



  1. ORM和DSL二者兼顾,类mybatis方式操作ElasticSearch,提供丰富的开发API开发Demo


  2. 采用XML文件配置和管理检索dsl脚本,简洁而直观;提供丰富的逻辑判断语法,在dsl脚本中可以使用变量、脚本片段、foreach循环、逻辑判断、注释;基于可扩展DSL配置管理机制可以非常方便地实现数据库、redis等方式管理dsl;配置管理的dsl语句支持在线修改、自动热加载,开发和调试非常方便


  3. 提供Elasticsearch集群节点自动负载均衡和容灾恢复机制,Elasticsearch节点断连恢复后可自动重连,高效可靠


  4. 提供Elasticsearch集群节点自动发现机制:自动发现Elasticsearch服务端节点增加和下线操作并变更客户端集群可用节点地址清单


  5. 提供http 连接池管理功能,提供精细化的http连接池参数配置管理


  6. 支持在应用中访问和操作多个Elasticsearch集群,支持在应用中访问和操作不同版本的Elasticsearch集群


  7. 支持基于X-Pack和searchguard两种安全认证机制


  8. 支持Elasticsearch-SQL-ORMElasticsearch-JDBC


  9. 提供高效的BulkProcessor处理机制


  10. 提供快速而高效的数据同步导入ES工具:支持DB到ElasticsearchElasticsearch到DB,MongoDB到Elastisearch数据同步HBase到Elasticsearch数据同步Kafka到Elasticsearch数据同步,将支持更多的数据源


  11. 提供按时间日期ES历史数据清理工具



源码地址:


https://github.com/bbossgroups/bboss-elasticsearch


https://gitee.com/bboss/bboss-elastic


从源码构建


https://esdoc.bbossgroups.com/#/bboss-build


Elasticsearch Demo


https://esdoc.bbossgroups.com/#/Elasticsearch-demo


快速集成和应用



 

浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报