SpringBoot 整合ElasticSearch,high level client

it2026-10-05  1

分三步: 1.导入依赖 2.编写配置,给容器注入一个RestHighLevelClient 3.使用

1.先创建一个模块,然后导入ES 的high level client

3.index: 可从ES 中保存和更新数据。

检索:也就是要构造出一下的格式

代码如下:

将检索条件打印出来,放到BeJson 中进行格式校验: 和Kibana 的检索条件格式是一样的。

我们要利用返回的数据,赋值到Java 类中,这里的操作就要看ES 的官方文档了

这个获取到的Hits 返回的是数据中最大的hits,真正的数据在hits 中

整体代码:

@Test public void searchData() throws IOException { //构造一个search 请求 SearchRequest searchRequest = new SearchRequest(); //指定检索的索引 searchRequest.indices("bank"); //1.指定DSL: 检索条件 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //1.1 构造检索条件 searchSourceBuilder.query(QueryBuilders.matchQuery("address","mill")); System.out.println(searchSourceBuilder.toString()); //1.2 按照年龄的值分布进行聚合 TermsAggregationBuilder ageAgg = AggregationBuilders.terms("ageAgg").field("age").size(10); searchSourceBuilder.aggregation(ageAgg); //1.3 计算平均薪资 AvgAggregationBuilder field = AggregationBuilders.avg("balanceAvg").field("balance"); searchSourceBuilder.aggregation(field); System.out.println("检索条件:"+searchSourceBuilder.toString()); searchRequest.source(searchSourceBuilder); //执行检索 SearchResponse searchResponse = client.search(searchRequest, GulimallElasticSearchConfig.COMMON_OPTIONS); //分析响应结果 System.out.println(searchResponse.toString()); SearchHits hits = searchResponse.getHits(); SearchHit[] hits1 = hits.getHits(); for (SearchHit hit: hits1) { String sourceAsString = hit.getSourceAsString(); Account account = JSON.parseObject(sourceAsString, Account.class); System.out.println("account"+account); } //获取本次检索到的分析信息 Aggregations aggregations = searchResponse.getAggregations(); Terms aggAgg = aggregations.get("ageAgg"); aggAgg.getBuckets().forEach(i -> { String keyAsString = i.getKeyAsString(); System.out.println("年龄:"+keyAsString); }); Avg balanceAgg = aggregations.get("balanceAvg"); double value = balanceAgg.getValue(); System.out.println("平均薪资:"+value); }
最新回复(0)