Estou tentando listar todos os buckets em uma agregação, mas parece estar mostrando apenas os 10 primeiros.
Minha pesquisa:
curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
"size": 0,
"aggregations": {
"bairro_count": {
"terms": {
"field": "bairro.raw"
}
}
}
}'
Devoluções:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 16920,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"bairro_count" : {
"buckets" : [ {
"key" : "Barra da Tijuca",
"doc_count" : 5812
}, {
"key" : "Centro",
"doc_count" : 1757
}, {
"key" : "Recreio dos Bandeirantes",
"doc_count" : 1027
}, {
"key" : "Ipanema",
"doc_count" : 927
}, {
"key" : "Copacabana",
"doc_count" : 842
}, {
"key" : "Leblon",
"doc_count" : 833
}, {
"key" : "Botafogo",
"doc_count" : 594
}, {
"key" : "Campo Grande",
"doc_count" : 456
}, {
"key" : "Tijuca",
"doc_count" : 361
}, {
"key" : "Flamengo",
"doc_count" : 328
} ]
}
}
}
Eu tenho muito mais que 10 chaves para essa agregação. Neste exemplo, eu teria 145 chaves e quero a contagem para cada uma delas. Existe alguma paginação nos baldes? Posso pegar todos eles?
Estou usando o Elasticsearch 1.1.0
fonte
size:0
. Você pode ler mais sobre isso neste github questãoNota
"size":10000
Obtenha no máximo 10.000 baldes. O padrão é 10."size":0
Como resultado,"hits"
contém 10 documentos por padrão. Nós não precisamos deles.Por padrão, os buckets são ordenados pelo
doc_count
em ordem decrescente.Como fielddata está desativado nos campos de texto por padrão . Se você não escolheu um mapeamento de tipo de campo, ele possui os mapeamentos dinâmicos padrão para os campos de sequência .
Então, em vez de escrever,
"field": "your_field"
você precisa ter"field": "your_field.keyword"
.fonte
Aumente o tamanho (2º tamanho) para 10000 em suas agregações de termos e você obterá o intervalo de tamanho 10000. Por padrão, é definido como 10. Além disso, se você deseja ver os resultados da pesquisa, basta fazer o 1º tamanho em 1, você pode consulte 1 documento, pois o ES oferece suporte à pesquisa e agregação.
fonte
Se você deseja obter todos os valores exclusivos sem definir um número mágico (
size: 10000
), use COMPOSITE AGGREGATION (ES 6.5+) .Da documentação oficial :
"Se você deseja recuperar todos os termos ou todas as combinações de termos em uma agregação de termos aninhados, use a COMPOSITE AGGREGATION que permite paginar todos os termos possíveis em vez de definir um tamanho maior que a cardinalidade do campo na agregação de termos. A agregação de termos deve retornar os principais termos e não permite a paginação ".
Exemplo de implementação em JavaScript:
fonte