{
"size":0,
"query":{
"bool":{
"must":[
{
"wildcard":{
"county_company.keyword":{
"wildcard":"*3*",
"boost":1
}
}
},
{
"range":{
"fault_start_time.keyword":{
"from":"2019-10-01 00:00:00",
"to":"2019-10-31 14:25:35",
"include_lower":true,
"include_upper":true,
"boost":1
}
}
}
],
"adjust_pure_negative":true,
"boost":1
}
},
"explain":true,
"aggregations":{ //此处是聚合查询条件集合
"alarm":{//此处是第一个聚合条件的 别名(自定义)用于返回取值使用
"terms":{
"field":"alarm_level_title.keyword", //分组聚合字段
"size":10,
"min_doc_count":1,
"shard_min_doc_count":0,
"show_term_doc_count_error":false,
"order":[
{
"_count":"desc"
},
{
"_key":"asc"
}
]
}
},
"alarmLevel":{ //此处是第二个聚合条件的 别名
"terms":{
"field":"alarm_level.keyword", //聚合条件的字段名称
"size":10,
"min_doc_count":1,
"shard_min_doc_count":0,
"show_term_doc_count_error":false,
"order":[
{
"_count":"desc"
},
{
"_key":"asc"
}
]
}
}
}
}
{
"took" : 50,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 438589, //返回总记录(总条数)
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : { //此处是聚合返回结果
"alarm" : { //此处是第一个聚合条件命名的返回结果
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ //此处返回的聚合值是一个数组
{
"key" : "默认等级",
"doc_count" : 438589
}
]
},
"alarmLevel" : { //此处是第二个聚合条件命名的返回结果
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ //此处返回的聚合值是一个数组
{
"key" : "0000",
"doc_count" : 438589
}
]
}
}
}
String alarm = searchResponse.getAggregations().get("alarm").toString();
String alarmLevel = searchResponse.getAggregations().get("alarmLevel").toString();
根据别名取出返回的值,例如下:
{
"alarm":{
"doc_count_error_upper_bound":0,
"sum_other_doc_count":0,
"buckets":[
{
"key":"默认等级",
"doc_count":438589
}
]
}
}
进一步取出buckets中的单个key,doc_count的值:
JSONObject objectAlarm = JSONObject.parseObject(alarm);
objectAlarm.forEach((k,v)->{
if(k.equals("alarm")){
Map v2 = (Map)v;
v2.forEach((k1,v1)->{
if(k1.equals("buckets")){
JSONArray array = JSONArray.parseArray(v1.toString());
for (int i = 0; i < array.size(); i++) {
HistoryFaultLevelDTO historyFaultLevelDTO = new HistoryFaultLevelDTO();
Map v4 = JSON.parseObject(array.get(i).toString(), Map.class);
historyFaultLevelDTO.setFaultLevelTitle(v4.get("key").toString());
historyFaultLevelDTO.setFaultLevelCount(Integer.parseInt(v4.get("doc_count").toString()));
resultList.add(historyFaultLevelDTO);
}
}
});
}
});