1. GET recommended-20220330/_search
    2. {
    3. "aggs": {
    4. "recommended": {
    5. "cardinality": {
    6. "field": "recommended.keyword"
    7. }
    8. },"searchUserIp": {
    9. "cardinality": {
    10. "field": "searchUserIp"
    11. }
    12. }
    13. },
    14. "size": 0
    15. }

    转换成java

    
    
            //统计关键词和ip数量
            try {
                SearchRequest searchRequest = new SearchRequest(param.getIndex());
                SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
                //去重统计关键词的数量
                CardinalityAggregationBuilder recommendedAgg = AggregationBuilders.cardinality("recommended").field("recommended.keyword");
                //去重统计ip的数量
                CardinalityAggregationBuilder searchUserIpAgg = AggregationBuilders.cardinality("searchUserIp").field("searchUserIp");
                searchSourceBuilder.trackTotalHits(true);
                searchSourceBuilder.size(0);
                searchSourceBuilder.aggregation(recommendedAgg);
                searchSourceBuilder.aggregation(searchUserIpAgg);
                searchRequest.source(searchSourceBuilder);
                SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
                Aggregations result = searchResponse.getAggregations();
                //获取聚合查询结果
                Cardinality recommendedTerms = result.get("recommended");
                map.put("recommendedCount",recommendedTerms.getValue());
                //获取聚合查询结果
                Cardinality searchUserIpTerms = result.get("searchUserIp");
                map.put("IpCount",searchUserIpTerms.getValue());
            } catch (Exception e) {
                log.error("[搜索关键词统计-统计IP和搜索词] 错误详情 : "+ ZsylException.getErrorMessage(e));
                return map;
            }