SpringBoot2.2.X整合ElasricSearch7.8
这里默认大家已经掌握es基础语法 es版本为7.8
pom
<!--引入es-high-level-client的坐标--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.8.0</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>7.8.0</version></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.0</version></dependency><!--ElasticSearch相关结束-->
properties配置文件
# 应用名称
spring.application.name=search
# 应用服务 WEB 访问端口
server.port=12000
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
配置类
/*** @create: 2022/7/2* @author: Tony Stark*/
@Configuration
public class StaticSearchConfig {public static final RequestOptions COMMOM_OPTIONS;static {RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();COMMOM_OPTIONS=builder.build();}@Beanpublic RestHighLevelClient esRestClient(){return new RestHighLevelClient(RestClient.builder(new HttpHost("localhost",1001,"http")));}}
单元测试
添加数据
@Autowiredprivate RestHighLevelClient esRestClient;@Testpublic void testEsClient() throws IOException {IndexRequest indexRequest = new IndexRequest();indexRequest.id("1");indexRequest.index("bank");indexRequest.source("username","zhangsan","age",19);//添加数据 请求参数使用默认的esRestClient.index(indexRequest, RequestOptions.DEFAULT);}
检索数据
/*** 检索测试* @throws IOException*/@Testpublic void testEsSearch() throws IOException {SearchRequest searchRequest = new SearchRequest();//指定查询索引searchRequest.indices("bank");SearchSourceBuilder builder = new SearchSourceBuilder();//查询所有address中带有mill的builder.query(QueryBuilders.matchQuery("address","mill"));//构造聚合条件 terms为聚合条件的名字 根据age聚合 size 显示多少条TermsAggregationBuilder aggregationBuilder1 = AggregationBuilders.terms("aggAgg").field("age").size(10);//添加聚合条件builder.aggregation(aggregationBuilder1);//聚合条件二 聚合名称为balanceAvg 根据balance求平均值AvgAggregationBuilder aggregationBuilder2 = AggregationBuilders.avg("balanceAvg").field("balance");//添加聚合条件二builder.aggregation(aggregationBuilder2);System.out.println(builder.toString());searchRequest.source(builder);//执行检索SearchResponse searchResponse = esRestClient.search(searchRequest, StaticSearchConfig.COMMOM_OPTIONS);System.out.println(searchResponse);//分析结果//获取所有查到的数据 所有命中数据 最外层SearchHits hits = searchResponse.getHits();//获取所有响应数据中的命中数据 内层hitsSearchHit[] hitsHits = hits.getHits();for (SearchHit hitsHit : hitsHits) {//遍历每条数据 获取索引String index = hitsHit.getIndex();long primaryTerm = hitsHit.getPrimaryTerm();System.out.println(index +" " +primaryTerm);
// Map<String, Object> sourceAsMap = hitsHit.getSourceAsMap();
// Set<Map.Entry<String, Object>> entries = sourceAsMap.entrySet();
// for (Map.Entry<String, Object> entry : entries) {// System.out.println(entry.getKey());
// System.out.println(entry.getValue());
// }String sourceAsString = hitsHit.getSourceAsString();//Account类为自己创建pojo类Account account = JSON.parseObject(sourceAsString, Account.class);System.out.println(account);//分析聚合结果 获取所有聚合数据Aggregations aggregations = searchResponse.getAggregations();//根据聚合的名字取出聚合信息Terms aggAgg = aggregations.get("aggAgg");Avg balanceAvg = aggregations.get("balanceAvg");for (Terms.Bucket bucket : aggAgg.getBuckets()) {System.out.println("年龄:"+bucket.getKey()+"------->人数:"+bucket.getDocCount());}System.out.println(balanceAvg.getName()+"平均工资---->"+balanceAvg.getValue());}}
部分结果
MallSearchApplicationTests.Account(account_number=472, balance=25571, firstname=Lee, lastname=Long, age=32, gender=F, address=288 Mill Street, employer=Comverges, email=leelong@comverges.com, city=Movico, state=MT)
年龄:38------->人数:2
年龄:28------->人数:1
年龄:32------->人数:1
balanceAvg平均工资---->25208.0
SpringBoot2.2.X整合ElasricSearch7.8相关推荐
- SpringBoot2.3.x整合ElasticSearch7.6.2 实现PDF,WORD全文检索
文章目录 1.下载安装,只下载elasticSearch.Kibana即可 插件安装 定义文本抽取管道 2.SpringBoot整合ElasticSearch application.yml 实体类 ...
- SpringCloudAlibaba篇(八)SpringCloudGateWay聚合swagger3、SpringBoot2.6.X整合swagger3+knife4j
上一篇,SpringCloudAlibaba篇(七)SpringCloud整合Zipkin分布式链路跟踪系统(SpringCloud+dubbo+Zipkin) 文章目录 前言 服务端 构建依赖 配置 ...
- SpringBoot2.x教程--整合使用jOOQ面向对象查询
一. jOOQ简介 1.jOOQ概述 jOOQ(Java Object Oriented Querying): 翻译成中文是 Java面向对象查询 的意思. jOOQ是Data Geekery提供的基 ...
- 基于 SpringBoot2.0+优雅整合 SpringBoot+Mybatis
SpringBoot 整合 Mybatis 有两种常用的方式,一种就是我们常见的 xml 的方式 ,还有一种是全注解的方式.我觉得这两者没有谁比谁好,在 SQL 语句不太长的情况下,我觉得全注解的方式 ...
- SpringBoot2.1.4整合log4j2保存日志到MySQL中
一.框架版本 springboot2.1.4,log4j2(2.11.2),MySQL5.7 maven依赖请自行上网百度,本文不再赘述,网上大多是基于log4j2-spring.xml方式配置jdb ...
- springboot2.5.0 整合 redis 配置详解
1. pom添加依赖 <!--redis--><dependency><groupId>org.springframework.boot</groupId&g ...
- springboot2.0.4整合log4j2不生效
log4j2的配置文件名为log4j2-spring.xml <dependency><groupId>org.springframework.boot</groupId ...
- OKTA==springboot2.5.4整合OKTA实现单点登录demo
SSO demo with Okta and spring boot - YouTube 整体流程 去okta注册后会自动生成一个教程,点击 Create your web application 设 ...
- 使用SpringBoot2.0.3整合SpringCloud
学习更多Java干货,戳上面的 蓝色字题 关注我! 最近开始学习SpringCloud,在此把我学习的过程记录起来,跟大家分享一下,一起学习.想学习SpringCloud的同学赶快上车吧.本次学习使用 ...
- 记一次springboot2.3.*项目整合elasticsearch7.6.2实现中文拼音分词搜索
一.elasticsearch官网下载:Elasticsearch 7.6.2 | Elastic 二.拼音.ik.繁简体转换插件安装 ik分词:GitHub - medcl/elasticsearc ...
最新文章
- 5- RAC 集合 RACTuple RACSequence
- 独家 | 一文带你盘点最新热门技术话题,技术圈潮人必读!
- Js弹性漂浮广告代码
- isulad代替docker_云原生时代的华为新“引擎”:iSula | Linux 中国
- 最好的FLV视频下载器 维棠 (支持优酷视频下载、土豆视频下载等)
- 利用hibernate中的SchemaExport生成数据表
- 断点调试 debug模式 1006
- python函数定义及调用-Python函数的基本定义和调用以及内置函数
- php图片翻转函数,PHP图片处理之图片旋转和图片翻转实例
- UniWebView for Unity移动端浏览器插件的一些基本情况
- PGP加密并签名邮件 实验
- JavaWeb - 国家语言代码表
- 李笑来《财富自由之路》思维导图
- word里画的流程图怎么全选_流程图怎么做?用Word制作流程图超方便!
- JAVA圆和正方形组合图形_关于java:图形数据流组合框架
- Ant Design Pro从零到一(页面创建)
- 【搜索】桐桐的运输方案
- 第五人格显示连接服务器失败怎么办,第五人格提示重新连接服务器怎么办 连接服务器失败解决方法...
- 完美世界手游服务器维护中,完美世界手游黑屏闪退解决办法 玩不了怎么办
- 松下A6伺服速度控制模式