webentwicklung-frage-antwort-db.com.de

Zeige alle Elasticsearch Aggregationsergebnisse / Buckets und nicht nur 10

Ich versuche, alle Buckets einer Aggregation aufzulisten, aber es werden nur die ersten 10 angezeigt.

Meine Suche:

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

Kehrt zurück:

{
  "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
      } ]
    }
  }
}

Ich habe viel mehr als 10 Schlüssel für diese Aggregation. In diesem Beispiel hätte ich 145 Schlüssel, und ich möchte die Anzahl für jeden von ihnen. Gibt es eine Paginierung auf Eimern? Kann ich sie alle bekommen?

Ich verwende Elasticsearch 1.1.0

134
Samuel Rizzo

Der Größenparameter sollte ein Parameter für das Beispiel für die Abfrage von Begriffen sein:

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

Wie in der Dokumentation erwähnt, funktioniert dies nur ab Version 1.1.0

Bearbeiten

Aktualisierung der Antwort basierend auf @PhaedrusTheGreek Kommentar.

einstellung size:0 ist ab 2.x veraltet, da in Ihrem Cluster Speicherprobleme mit Feldwerten hoher Kardinalität auftreten. Sie können mehr darüber im Github lesen Ausgabe hier .

Es wird empfohlen, einen angemessenen Wert für size explizit auf einen Wert zwischen 1 und 2147483647 festzulegen.

173
keety

Wie werden alle Eimer angezeigt?

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

Hinweis

  • "size":10000 Holen Sie sich höchstens 10000 Eimer. Standard ist 10.

  • "size":0 Im Ergebnis enthält "hits" Standardmäßig 10 Dokumente. Wir brauchen sie nicht.

  • Standardmäßig werden die Eimer in absteigender Reihenfolge nach doc_count Sortiert.


Warum erhalte ich die Fehlermeldung Fielddata is disabled on text fields by default?

Weil Felddaten sind in Textfeldern standardmäßig deaktiviert . Wenn Sie eine Feldtypzuordnung nicht explizit ausgewählt haben, hat sie das dynamische Standardzuordnungen für Zeichenfolgenfelder .

Anstatt also "field": "your_field" Zu schreiben, müssen Sie "field": "your_field.keyword" Haben.

25
sam

Wenn Sie die Größe (2. Größe) in Ihren Termaggregationen auf 10000 erhöhen, wird der Bucket mit der Größe 10000 angezeigt. Standardmäßig ist der Wert auf 10 festgelegt. Wenn Sie die Suchergebnisse anzeigen möchten, können Sie auch die 1. Größe auf 1 setzen siehe 1 Dokument, da ES sowohl die Suche als auch die Aggregation unterstützt.

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

         }
      }
   }
}'
3
wonder

Aber übrigens am https://github.com/elasticsearch/elasticsearch/issues/1776

wurde am 22. Juni geschlossen, wurde meine Elasticsearch vor diesem Tag heruntergeladen und installiert. Nehmen wir also an, Sie können sie erhalten, wenn Sie die neueste Version haben

1
checkitout