GET recommended-20220330/_search
{
"aggs": {
"recommended": {
"cardinality": {
"field": "recommended.keyword"
}
},"searchUserIp": {
"cardinality": {
"field": "searchUserIp"
}
}
},
"size": 0
}
转换成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;
}