Elasticsearch整合 springboot
一 .导入依赖

<!-- es -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.4.2</version>
<exclusions>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.4.2</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.4.2</version>
</dependency>
二. 创建配置文件
@Configuration
public class ESConfig {
public final static RequestOptions requestOptions;
static {
RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
requestOptions = builder.build();
}
@Bean
public RestHighLevelClient esClient(){
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.1.11", 9200, "http")));
return client;
}
}
三. 测试保存
@Autowired
private RestHighLevelClient esClient;
// 测试保存
public void testSaveESData() throws IOException {
// 指定索引 没有就会创建
IndexRequest indexRequest = new IndexRequest("users");
//
indexRequest.source(JSON.toJSONString(new User("海洋","男")), XContentType.JSON);
esClient.index(indexRequest,ESConfig.requestOptions);
}
四. 测试聚合搜索
@Autowired
private RestHighLevelClient esClient;
// 测试搜索
public void testSearch() throws IOException {
SearchRequest searchRequest = new SearchRequest();
// 指定索引
searchRequest.indices("bank");
// 创建搜索 条件
SearchSourceBuilder searchBuilder = new SearchSourceBuilder();
// 搜索出 address字段里面包含 mill的
searchBuilder.query(QueryBuilders.matchQuery("address","mill"));
// 根据年龄的分布进行聚合
searchBuilder.aggregation(AggregationBuilders.terms("ageAgg").field("age").size(10));
// 获取他们的平均工资
searchBuilder.aggregation(AggregationBuilders.avg("balanceAvg").field("balance"));
searchRequest.source(searchBuilder);
SearchResponse search = esClient.search(searchRequest, ESConfig.requestOptions);
System.out.println(search);
// 获取命中的数据
SearchHits hits = search.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
// 获取聚合的信息
Aggregations aggregations = search.getAggregations();
Terms ageAgg = aggregations.get("ageAgg");
for (Terms.Bucket bucket : ageAgg.getBuckets()) {
System.out.println("年龄:" + bucket.getKeyAsString() + ",数量:" + bucket.getDocCount());
}
Avg balanceAvg = aggregations.get("balanceAvg");
System.out.println("平均工资" + balanceAvg.getValue());
}