Ответ 1
Если вы не довольны использованием терминов scripting, то другими вариантами будет использование вложенных агрегатов, предполагая, что вы можете использовать 1.0.0.
Ваше агрегирование будет выглядеть примерно так:
{
"query": {
"match_all": {}
},
"aggs": {
"theIds": {
"terms" : {
"field": "thingId"
},
"aggs":{
"theNames": {
"terms": {
"field": "thingName"
}
}
}
}
}
}
И ответ будет примерно таким:
"aggregations": {
"theIds": {
"buckets": [
{
"key": "1",
"doc_count": 5,
"theNames": {
"buckets": [
{
"key": "AAA",
"doc_count": 3
},
{
"key": "BBB",
"doc_count": 3
},
{
"key": "CCC",
"doc_count": 2
}
]
}
},
{
"key": "2",
"doc_count": 2,
"theNames": {
"buckets": [
{
"key": "AAA",
"doc_count": 2
}
]
}
}
]
}
}