API агрегации позволяет группировать по нескольким полям, используя субагрегации. Предположим, вы хотите сгруппировать по полям field1, field2 и field3:
С помощью этого запроса будут решены ваши 1,2 и 3 вопроса.
POST /stackoverflow/_search?size=0
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"createdDate": {
"query": "2019-10-31T00:00:00.000Z",
"slop": 0,
"zero_terms_query": "NONE",
"boost": 1
}
}
},
{
"match_phrase": {
"responseCode": {
"query": "200",
"slop": 0,
"zero_terms_query": "NONE",
"boost": 1
}
}
},
{
"match_phrase": {
"metricName": {
"query": "call",
"slop": 0,
"zero_terms_query": "NONE",
"boost": 1
}
}
}
]
}
},
"aggr": {
"agg1": {
"terms": {
"field": "metricName",
"size": 10,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
}
},
"aggs": {
"agg2": {
"terms": {
"field": "createdDate",
"size": 10,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
}
}
}
}
}