J'essaie de lister tous les seaux sur une agrégation, mais il semble ne montrer que les 10 premiers.
Ma recherche:
curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
"size": 0,
"aggregations": {
"bairro_count": {
"terms": {
"field": "bairro.raw"
}
}
}
}'
Retour:
{
"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
} ]
}
}
}
J'ai bien plus de 10 clés pour cette agrégation. Dans cet exemple, j'aurais 145 clés et je veux le décompte pour chacune d'elles. Y a-t-il une pagination sur les seaux? Puis-je tous les avoir?
J'utilise Elasticsearch 1.1.0
la source
size:0
. Vous pouvez en savoir plus dans ce numéro deRemarque
"size":10000
Obtenez au plus 10000 seaux. La valeur par défaut est 10."size":0
En conséquence,"hits"
contient 10 documents par défaut. Nous n'en avons pas besoin.Par défaut, les seaux sont classés par
doc_count
ordre décroissant.Parce que fielddata est désactivé sur les champs de texte par défaut . Si vous n'avez pas explicitement choisi de mappage de type de champ, il a les mappages dynamiques par défaut pour les champs de chaîne .
Donc, au lieu d'écrire,
"field": "your_field"
vous devez avoir"field": "your_field.keyword"
.la source
Augmentez la taille (2ème taille) à 10000 dans vos agrégations de termes et vous obtiendrez le seau de taille 10000. Par défaut, il est défini sur 10. De plus, si vous souhaitez voir les résultats de la recherche, définissez simplement la première taille sur 1, vous pouvez voir 1 document, car ES prend en charge à la fois la recherche et l'agrégation.
la source
Si vous souhaitez obtenir toutes les valeurs uniques sans définir de nombre magique (
size: 10000
), utilisez AGRÉGATION COMPOSITE (ES 6.5+) .De la documentation officielle :
"Si vous souhaitez récupérer tous les termes ou toutes les combinaisons de termes dans une agrégation de termes imbriqués vous devez utiliser l'AGREGATION COMPOSITE qui permet de paginer sur tous les termes possibles plutôt que de définir une taille supérieure à la cardinalité du champ dans l'agrégation des termes. L'agrégation de termes est destinée à renvoyer les termes principaux et ne permet pas la pagination. "
Exemple d'implémentation en JavaScript:
la source