依赖
<!-- elasticsearch-rest-client -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.13.3</version>
</dependency>
<!-- elasticsearch-rest-high-level-client -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.13.3</version>
</dependency>
配置
@Configuration
public class ESConfig {
@Bean
public RestHighLevelClient getRestHighLevelClient(){
HttpHost http1 = new HttpHost("127.0.0.1", 9200, "http");
HttpHost http2 = new HttpHost("127.0.0.1", 9201, "http");
RestClientBuilder restClientBuilder = RestClient.builder(http1, http2);
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);
return restHighLevelClient;
}
}
@Autowired
private RestHighLevelClient restHighLevelClient;
聚合查询
public void aggQuery() throws IOException {
AvgAggregationBuilder avgAggregationBuilder = AggregationBuilders
.avg("avg_age").field("age");
ValueCountAggregationBuilder valueCountAggregationBuilder = AggregationBuilders
.count("count_name").field("name.keyword");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.aggregation(avgAggregationBuilder);
sourceBuilder.aggregation(valueCountAggregationBuilder);
sourceBuilder.query(QueryBuilders.matchQuery("name", "bb"));
sourceBuilder.from(1);
sourceBuilder.size(6);
sourceBuilder.profile(true);
SearchRequest searchRequest = new SearchRequest("myindex");
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
Aggregations aggregations = searchResponse.getAggregations();
Avg avg_age = aggregations.get("avg_age");
System.out.println(avg_age.getValue());
ValueCount count_age = aggregations.get("count_name");
System.out.println(count_age.getValue());
}