web-dev-qa-db-fra.com

Afficher tous les résultats d'agrégation / seaux Elasticsearch et pas seulement 10

J'essaie de répertorier tous les compartiments 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"
         }
      }
   }
}'

Résultats:

{
  "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 beaucoup plus que 10 clés pour cette agrégation. Dans cet exemple, j'aurais 145 clés et je veux le nombre pour chacune d'entre elles. Y a-t-il une certaine pagination sur les seaux? Puis-je les avoir tous?

J'utilise Elasticsearch 1.1.0

134
Samuel Rizzo

Le paramètre de taille doit être un paramètre pour l'exemple de requête de termes:

curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
   "size": 0,
   "aggregations": {
      "bairro_count": {
         "terms": {
            "field": "bairro.raw",
             "size": 0
         }
      }
   }
}'

Comme mentionné dans la doc ne fonctionne qu'à partir de la version 1.1.0

Modifier

Mise à jour de la réponse en fonction du commentaire de @PhaedrusTheGreek.

le réglage de size:0 est obsolète à partir de la version 2.x en raison de problèmes de mémoire causés à votre cluster par des valeurs de champ de haute cardinalité. Vous pouvez en savoir plus à ce sujet dans le github numéro ici .

Il est recommandé de définir explicitement une valeur raisonnable pour size un nombre compris entre 1 et 2147483647.

173
keety

Comment afficher tous les seaux?

{
  "size": 0,
  "aggs": {
    "aggregation_name": {
      "terms": {
        "field": "your_field",
        "size": 10000
      }
    }
  }
}

Remarque

  • "size":10000 Obtenez au maximum 10000 seaux. La valeur par défaut est 10.

  • "size":0 En conséquence, "hits" contient 10 documents par défaut. Nous n'avons pas besoin d'eux.

  • Par défaut, les compartiments sont classés par doc_count par ordre décroissant.


Pourquoi l'erreur Fielddata is disabled on text fields by default est-elle générée

Car les données de champ sont désactivées par défaut sur les champs de texte . Si vous n'avez pas explicitement choisi un mappage de type de champ, il possède le mappages dynamiques par défaut pour les champs de chaîne .

Ainsi, au lieu d'écrire "field": "your_field", vous devez avoir "field": "your_field.keyword".

25
sam

Augmentez la taille (2ème taille) à 10000 dans vos agrégations de termes et vous obtiendrez un compartiment de taille 10000. Par défaut, il est défini sur 10. De plus, si vous souhaitez voir les résultats de la recherche, il suffit de définir la 1ère taille à 1. voir 1 document, car ES prend en charge à la fois la recherche et l'agrégation.

curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
   "size": 1,
   "aggregations": {
      "bairro_count": {
         "terms": {
             "field": "bairro.raw",
             "size": 10000

         }
      }
   }
}'
3
wonder

Mais BTW, sur https://github.com/elasticsearch/elasticsearch/issues/1776

cela a été fermé le 22 juin, mon elasticsearch a été téléchargé et installé avant ce jour-là, donc supposez que vous pouvez l'avoir si vous avez la dernière version.

1
checkitout