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

1.导依赖

<dependency><groupId>com.bbossgroups.plugins</groupId><artifactId>bboss-elasticsearch-rest-jdbc</artifactId><version>6.1.8</version></dependency><dependency><groupId>com.bbossgroups.plugins</groupId><artifactId>bboss-elasticsearch-spring-boot-starter</artifactId><version>6.1.8</version></dependency>

2.配置

##ES集群配置,支持x-pack和searchguard
#spring.elasticsearch.bboss.elasticUser=elastic
#spring.elasticsearch.bboss.elasticPassword=changemespring.elasticsearch.bboss.elasticsearch.rest.hostNames=192.168.57.128:9200
#spring.elasticsearch.bboss.elasticsearch.rest.hostNames=10.180.211.27:9280,10.180.211.27:9281,10.180.211.27:9282
##https配置,添加https://协议头
#spring.elasticsearch.bboss.default.elasticsearch.rest.hostNames=https://10.180.211.27:9280,https://10.180.211.27:9281,https://10.180.211.27:9282
spring.elasticsearch.bboss.elasticsearch.dateFormat=yyyy.MM.dd
spring.elasticsearch.bboss.elasticsearch.timeZone=Asia/Shanghai
spring.elasticsearch.bboss.elasticsearch.ttl=2d
#在控制台输出脚本调试开关showTemplate,false关闭,true打开,同时log4j至少是info级别
spring.elasticsearch.bboss.elasticsearch.showTemplate=true
spring.elasticsearch.bboss.elasticsearch.discoverHost=false
# dsl配置文件热加载扫描时间间隔,毫秒为单位,默认5秒扫描一次,<= 0时关闭扫描机制
spring.elasticsearch.bboss.dslfile.refreshInterval = -1##es client http连接池配置
spring.elasticsearch.bboss.http.timeoutConnection = 50000
spring.elasticsearch.bboss.http.timeoutSocket = 50000
spring.elasticsearch.bboss.http.connectionRequestTimeout=50000
spring.elasticsearch.bboss.http.retryTime = 1
spring.elasticsearch.bboss.http.maxLineLength = -1
spring.elasticsearch.bboss.http.maxHeaderCount = 200
spring.elasticsearch.bboss.http.maxTotal = 400
spring.elasticsearch.bboss.http.defaultMaxPerRoute = 200
spring.elasticsearch.bboss.http.soReuseAddress = false
spring.elasticsearch.bboss.http.soKeepAlive = false
spring.elasticsearch.bboss.http.timeToLive = 3600000
spring.elasticsearch.bboss.http.keepAlive = 3600000
spring.elasticsearch.bboss.http.keystore =
spring.elasticsearch.bboss.http.keyPassword =
# ssl 主机名称校验,是否采用default配置,
# 如果指定为default,就采用DefaultHostnameVerifier,否则采用 SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER
spring.elasticsearch.bboss.http.hostnameVerifier =

4.开始使用api(这里我使用的测试类)

由于操作api需要创建客户端实例,这里有两种方式:

    @Autowiredprivate BBossESStarter bbossESStarter;//这个是通过dsl脚本配置来创建(在需要自定义mapping时需要)ClientInterface configClientUtil = bbossESStarter.getConfigRestClient(mappath);//这个则相反,不需要dslClientInterface clientUtil = bbossESStarter.getRestClient(); 

4.1 创建索引(创建索引有两种方式,一种是普通的创建,即不指定mapping,对字段使用默认的数据类型。而另一种则是自定义mapping,每个字段的数据类型由我们自己指定):

4.1.1 普通创建:

@SpringBootTest
class EsBbossTest {@Autowiredprivate BBossESStarter bbossESStarter;/***创建索引*/@Testpublic void createIndex(){String result = bbossESStarter.getRestClient().createIndiceMapping("blog","");System.out.println(result);}
}

以下是控制台打印结果:

2020-07-04 17:30:42.913  INFO 7276 --- [           main] o.f.e.client.ElasticSearchRestClient     : ElasticSearch http request action:blog,request body:{"acknowledged":true,"shards_acknowledged":true,"index":"blog"}

4.1.2 自定义mapping:

先创建一个dsl脚本文件,在里面自定义mapping规则:

<propertys><property name="create51jobIndex">//每个property中的name属性表示当前mapping的命名,一个xml文件里可设置多个dsl脚本<![CDATA[{"settings": {"number_of_shards": 1,"number_of_replicas": 1,"index.refresh_interval": "5s"},"mappings": {"properties": {"job":{"type":"text"},"company": {"type": "text"},"place": {"type": "text"},"salar": {"type": "text"},"data": {"type": "date","format":"yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||epoch_millis"}}}}]]></property>
</propertys>

然后创建客户端,并且调用创建索引api:

@SpringBootTest
class EsBbossTest {@Autowiredprivate BBossESStarter bbossESStarter;/***创建索引*/@Testpublic void createIndex(){ClientInterface clientUtil = bbossESStarter.getConfigRestClient("esmapper/job.xml");String result = clientUtil.createIndiceMapping("51job","create51jobIndex");System.out.println(result);}
}

以下是控制台打印结果:

2020-07-04 17:10:35.903  INFO 6172 --- [           main] o.f.e.client.ElasticSearchRestClient     : ElasticSearch http request action:51job,request body:
{"settings": {"number_of_shards": 1,"number_of_replicas": 1,"index.refresh_interval": "5s"},"mappings": {"properties": {"job":{"type":"text"},"company": {"type": "text"},"place": {"type": "text"},"salar": {"type": "text"},"data": {"type": "date","format":"yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||epoch_millis"}}}}
{"acknowledged":true,"shards_acknowledged":true,"index":"51job"}2020-07-04 17:10:36.113  INFO 6172 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
2020-07-04 17:10:37.110  INFO 6172 --- [     Thread-153] o.f.elasticsearch.ElasticSearch          : ElasticSearch client stoppingProcess finished with exit code 0

4.2 删除索引

@SpringBootTest
class EsBbossTest {@Autowiredprivate BBossESStarter bbossESStarter;/***删除索引*/@Testpublic void dropIndex(){String result = bbossESStarter.getRestClient().dropIndice("blog");System.out.println(result);}
}

打印结果:

2020-07-04 17:37:12.133  INFO 9384 --- [           main] o.f.e.client.ElasticSearchRestClient     : ElasticSearch http request action:blog?pretty
{"acknowledged" : true
}

4.3 判断索引是否存在

@SpringBootTest
class EsBbossTest {@Autowiredprivate BBossESStarter bbossESStarter;/***判断索引是否存在*/@Testpublic void indexIsExists(){boolean exist = bbossESStarter.getRestClient().existIndice("51job");System.out.println(exist);}
}

打印结果:

2020-07-04 17:40:03.011  INFO 14156 --- [           main] o.f.e.client.ElasticSearchRestClient     : ElasticSearch http request action:51job
true

4.4 判断索引类型是否存在

@SpringBootTest
class EsBbossTest {@Autowiredprivate BBossESStarter bbossESStarter;/***判断索引类型是否存在*/@Testpublic void typeIsExists(){boolean exist = bbossESStarter.getRestClient().existIndiceType("51job","_doc");System.out.println(exist);}
}

打印结果:

2020-07-04 17:42:24.657  INFO 9168 --- [           main] o.f.e.client.ElasticSearchRestClient     : ElasticSearch http request action:51job/_mapping/_doc
true

4.5 添加单个文档

@SpringBootTest
class EsBbossTest {@Autowiredprivate BBossESStarter bbossESStarter;/***指定索引添加单个文档*/@Testpublic void addDocument(){Qcpage qcpage=new Qcpage();qcpage.setCompany("安软科技股份有限公司").setData("2020-06-03 21:18:12").setJob("Java开发工程师").setPlace("深圳南山").setSalar("13000/月");String result = bbossESStarter.getRestClient().addDocument("51job",qcpage);System.out.println(result);}
}

打印结果:

2020-07-04 17:53:00.735  INFO 13100 --- [           main] o.f.e.client.ElasticSearchRestClient     : ElasticSearch http request action:51job/_doc,request body:
{"id":null,"job":"java开发工程师","company":"安软科技股份有限公司","place":"深圳南山","salar":"13000/月","data":"2020-06-03 21:18:12"}
{"_index":"51job","_type":"_doc","_id":"YZI-GXMBBreT5daWT3ND","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":2,"_primary_term":1}

4.6 批量添加文档

@SpringBootTest
class EsBbossTest {@Autowiredprivate BBossESStarter bbossESStarter;@AutowiredQcpageService qcpageService;/***批量添加文档(此处从mysql取出来1300条数据测试)*/@Testpublic void batchAddDocument(){List<Qcpage> list=qcpageService.list();long startTime = System.currentTimeMillis();String result = bbossESStarter.getRestClient().addDocuments("51job",list);long endTime = System.currentTimeMillis();System.out.println("添加"+list.size()+"条数据耗时:" + (endTime - startTime)/1000 + "s");System.out.println(result);}
}

打印结果(耗时0.3s):

添加1341条数据耗时:333ms

4.7 查询单个文档

@SpringBootTest
class EsBbossTest {@Autowiredprivate BBossESStarter bbossESStarter;/***查询一个文档*/@Testpublic void getDocument(){String result = bbossESStarter.getRestClient().getDocument("51job","7pJsGXMBBreT5daW4X1w");System.out.println(result);}
}

打印结果:

{"_index":"51job","_type":"_doc","_id":"7pJsGXMBBreT5daW4X1w","_version":1,"_seq_no":18,"_primary_term":1,"found":true,"_source":{"id":19,"job":"JAVA开发工程师","company":"木炎(深圳)区块链技术有限公司","place":"深圳-福田区","salar":"1-1.5万/月","data":"12-13"}}

还有很多查询方法,也可以写dsl自定义条件查询,内容多就不写啦!!!!

springboot集成bboss操作elasticsearch索引,类型,文档(单集群)相关推荐

  1. ElasticSearch学习篇2_Rest格式操作(索引、文档)、文档的简单操作(增、删、改、查)、复杂查询操作(排序、分页、高亮)

    目录 关于索引的基本操作 声明索引.字段类型 获取索引信息举栗 删除索引举栗 拓展命令 关于文档的基本操作 插入文档 删除文档 修改文档 获取文档 根据id获取 根据条件获取 带json参数体的查询( ...

  2. Elasticsearch索引与文档

    概述 在Elasticsearch中,索引和文档是REST接口操作的最基本资源.索引一般是以索引名称出现在REST请求操作的资源路径上,而文档则是以文档ID为标识出现在资源路径中.除了这两种资源,映射 ...

  3. springboot整合bboss操作elasticsearch

    elaticsearch有很多的java客户端,像transportclient,jestclient,springdata.但是还有一种bboss可以让我们像操作mybatis一样的来操作elast ...

  4. elasticsearch索引、文档、映射等概念

    1.文档(document) 文档是存储在Elasticsearch中的一个JSON格式的字符串.它就像在关系数据库中表的一行.每个存储在索引中的一个文档都有一个类型和一个ID,每个文档都是一个JSO ...

  5. Elasticsearch - HTTP操作索引,文档,映射;高级搜索(五)

    阅读本文前可先参考 https://blog.csdn.net/MinggeQingchun/article/details/126618387 https://blog.csdn.net/Mingg ...

  6. SpringBoot集成BBOSS-ElasticSearch实现ElasticSearch客户端

    一.BBOSS-ElasticSearch 二.通过freeMarker创建索引库.创建索引 2.1maven <dependency><groupId>org.springf ...

  7. elasticsearch基础1——索引、文档

    用于复习快速回顾. 目录 1.初识弹性搜索elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 1.1.2.ELK弹性栈 1.1.3.elasticsearch和 ...

  8. Elasticsearch基本操作:索引、文档、搜索

    1.索引 在 Elasticsearch 中开始为数据建立索引之前要做的第一步操作是创建--我们的数据主要容器.这里的索引类似于 SQL 中的数据库概念.它是类型(相当于 SQL 中的表)和文档(相当 ...

  9. ElasticSearch什么是文档?索引一个文档

    什么是文档? 程序中大多的实体或对象能够被序列化为包含键值对的JSON对象,键(key)是字段(field)或属性(property)的名字,值(value)可以是字符串.数字.布尔类型.另一个对象. ...

最新文章

  1. 深度学习基础总结,无一句废话(附完整思维导图)
  2. 时空大数据赋能智慧城市的思考和实践
  3. centos6.8安装mysql打不开,Centos6.8安装Mysql5.7
  4. 用MediaInfo获取音视频信息
  5. 人工智能之知识图谱-学习笔记
  6. Jira 随便总结
  7. 14个支持响应式设计的流行前端开发框架
  8. 三星p7510 android 8.0,7510更新到安卓8.0了。。。
  9. 亚马逊aws深度学习_AWS速查表:Amazon Web Services入门时首先要学习的5件事
  10. 吃糖果hdu2502
  11. 转:过度疲劳的27个信号与预防方法
  12. [转载] java接口中方法的默认访问修饰符为public
  13. mysql 事务、隔离级别
  14. matlab单机无限大系统_单机无穷大系统暂态仿真(完整).docx
  15. 【张量分析】倒三角 微分算子 对 张量场 的作用
  16. 2018-11-3-如何使用-Telegram
  17. 苹果笔记本开机出现闪烁的问号文件夹解决方法
  18. 从0开始学大数据(一)
  19. python 余弦定理_自己实现文本相似度算法(余弦定理)
  20. XTUOJ-1272-Robot

热门文章

  1. 大多数人都自我嫌弃而不自知
  2. 电脑编程技巧与维护杂志电脑编程技巧与维护杂志社电脑编程技巧与维护编辑部2022年第6期目录
  3. 程序员进阶神器,ProcessOn绘制时序图
  4. android一键清理任务,Android 一键清理、内存清理功能实现
  5. 5.Wide Deep Learning for Recommender Systems论文详细解读和代码实现
  6. 中国石油大学《化工原理二》
  7. 计算机应用蘑菇丁周报,蘑菇钉周记(共10篇)
  8. input正则邮箱_常用正则表达式—邮箱(Email)
  9. 『老叶茶馆』2021年度热文推荐
  10. 36-sparkstreaming