Ich versuche, alle Buckets in einer Aggregation aufzulisten, aber es scheint nur die ersten 10 anzuzeigen.
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 bei Eimern? Kann ich alle bekommen?
Ich verwende Elasticsearch 1.1.0
quelle
size:0
. Sie können mehr darüber in dieser Github- AusgabeHinweis
"size":10000
Holen Sie sich höchstens 10000 Eimer. Standard ist 10."size":0
Das Ergebnis"hits"
enthält standardmäßig 10 Dokumente. Wir brauchen sie nicht.Standardmäßig werden die Eimer
doc_count
in absteigender Reihenfolge sortiert.Da Felddaten für Textfelder standardmäßig deaktiviert sind . Wenn Sie eine Feldtypzuordnung nicht explizit ausgewählt haben, verfügt sie über die dynamischen Standardzuordnungen für Zeichenfolgenfelder .
Also, anstatt zu schreiben
"field": "your_field"
, müssen Sie haben"field": "your_field.keyword"
.quelle
Wenn Sie die Größe (2. Größe) in Ihren Termaggregationen auf 10000 erhöhen, erhalten Sie den Bucket mit der Größe 10000. Standardmäßig ist er auf 10 eingestellt. Wenn Sie die Suchergebnisse anzeigen möchten, setzen Sie einfach die 1. Größe auf 1 siehe 1 Dokument, da ES sowohl die Suche als auch die Aggregation unterstützt.
quelle
Wenn Sie alle eindeutigen Werte erhalten
size: 10000
möchten, ohne eine magische Zahl ( ) festzulegen , verwenden Sie COMPOSITE AGGREGATION (ES 6.5+) .Aus der offiziellen Dokumentation :
"Wenn Sie alle Begriffe oder alle Kombinationen von Begriffen in einer verschachtelten Begriffsaggregation abrufen möchten, sollten Sie die COMPOSITE AGGREGATION verwenden , mit der Sie über alle möglichen Begriffe paginieren können, anstatt eine Größe festzulegen, die größer ist als die Kardinalität des Felds in der Begriffsaggregation Die Aggregation von Begriffen soll die Top-Begriffe zurückgeben und erlaubt keine Paginierung. "
Implementierungsbeispiel in JavaScript:
quelle