java 连接 Elasticsearch 使用 RestHighLevelClient 进行聚合查询

依赖

<!-- 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());
}
posted @ 2022-03-07 18:04  叕叕666  阅读(157)  评论(0)    收藏  举报