Agregação do Elasticsearch. Ordenar por intervalo aninhado doc_count
O que eu quero alcançar é a agregação por pares únicos (cidade, ESTADO). Conforme a documentação do ElasticsearchA agregação de termos não suporta a coleta de termos de vários campos no mesmo documento. Assim, criei um agg aninhado como este:
{
"size": 0,
"aggs": {
"cities": {
"terms": {
"field": "address.city",
"size": 12
},
"aggs": {
"states": {
"terms": {
"field": "address.stateOrProvince"
},
"aggs": {
"topCity": {
"top_hits": {
"size": 1,
"sort": [
{
"price.value": {
"order": "desc" }}]}}}}}}}}
Como resultado dessa agregação, recebo uma resposta como esta:
{
"aggregations": {
"cities": {
"buckets": [
{
"key": "las vegas",
"doc_count": 5927,
"states": {
"buckets": [
{ "key": "nv", "doc_count": 5840 },
{ "key": "nm", "doc_count": 85 }
]
}
},
{
"key": "jacksonville",
"doc_count": 5689,
"states": {
"buckets": [
{ "key": "fl", "doc_count": 2986 },
{ "key": "nc", "doc_count": 1962 },
{ "key": "ar", "doc_count": 290 }]}}]}}}
A questão é como obter resultados ordenados pelo doc_count mais profundo?
A lista ordenada esperada deve ser assim:
Las Vegas, NV (5840)Jacksonville, Flórida (2986)jacksonville, nc (1962)jacksonville, ar (290)Las Vegas, nm (85)