1、查询userName是苹果, userCode是apple的数据条数
{
"query": {
"bool": {
"must": [
{
"term": {
"userName.keyword": {
"value": "张三",
"boost": 1
}
}
},
{
"term": {
"userCode.keyword": {
"value": "zhangsan",
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
}
CountRequest countRequest = new CountRequest(indexName);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
if (!StringUtils.isEmpty(userName)) {
BoolQueryBuilder userNameQuery = boolQueryBuilder.must(QueryBuilders.termQuery("userName.keyword", userName));
searchSourceBuilder.query(userNameQuery);
}
if (!StringUtils.isEmpty(userCode)) {
BoolQueryBuilder userCodeQuery = boolQueryBuilder.must(QueryBuilders.termQuery("userCode.keyword", userCode));
searchSourceBuilder.query(userCodeQuery);
}
countRequest.source(searchSourceBuilder);
CountResponse countResponse = restHighLevelClient.count(countRequest, RequestOptions.DEFAULT);
long count = countResponse.getCount();
2、查询userName是苹果,香蕉,橘子的数据,并且统计数据条数
{
"query": {
"bool": {
"must": [
{
"terms": {
"userName.keyword": [
"苹果",
"香蕉",
"橘子"
],
"boost": 1
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"aggregations": {
"userName": {
"terms": {
"field": "userName.keyword",
"size": 10000,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
}
}
}
}
Map<String, Long> dataMap = Maps.newHashMap();
SearchRequest searchRequest = new SearchRequest(indexName);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
BoolQueryBuilder userNameQuery = boolQueryBuilder.must(QueryBuilders.termsQuery("userName.keyword", userName));
searchSourceBuilder.query(userNameQuery);
TermsAggregationBuilder userNameAgg = AggregationBuilders.terms("userName").field("userName.keyword");
userNameAgg.size(10000);
searchSourceBuilder.aggregation(userNameAgg);
searchRequest.source(searchSourceBuilder);
try {
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
ParsedStringTerms userNameAggs = searchResponse.getAggregations().get("userName");
List<? extends Terms.Bucket> buckets = userNameAggs.getBuckets();
for (Terms.Bucket bucket : buckets) {
String key = (String) bucket.getKey();
dataMap.put(key, bucket.getDocCount());
}
} catch (IOException e) {
log.info(e.getMessage());
}