Próbuję wyświetlić wszystkie zasobniki w agregacji, ale wydaje się, że pokazuje tylko pierwsze 10.
Moje wyszukiwanie:
curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
"size": 0,
"aggregations": {
"bairro_count": {
"terms": {
"field": "bairro.raw"
}
}
}
}'
Zwroty:
{
"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
} ]
}
}
}
Mam znacznie więcej niż 10 kluczy do tej agregacji. W tym przykładzie miałbym 145 kluczy i chciałbym policzyć dla każdego z nich. Czy w zasobnikach jest jakaś paginacja? Czy mogę dostać je wszystkie?
Używam Elasticsearch 1.1.0
źródło
size:0
. Więcej o tym przeczytacie w tym wydaniu naUwaga
"size":10000
Zdobądź maksymalnie 10000 wiader. Wartość domyślna to 10."size":0
W rezultacie"hits"
zawiera domyślnie 10 dokumentów. Nie potrzebujemy ich.Domyślnie zasobniki są sortowane
doc_count
malejąco.Ponieważ dane pól są domyślnie wyłączone w polach tekstowych . Jeśli nie wybrałeś jawnie mapowania typu pola, ma ono domyślne odwzorowania dynamiczne dla pól łańcuchowych .
Więc zamiast pisać
"field": "your_field"
, musisz mieć"field": "your_field.keyword"
.źródło
Zwiększ rozmiar (drugi rozmiar) do 10000 w agregacjach terminów, a otrzymasz segment o rozmiarze 10000. Domyślnie jest to 10. Również jeśli chcesz zobaczyć wyniki wyszukiwania, ustaw pierwszy rozmiar na 1, możesz zobacz 1 dokument, ponieważ ES obsługuje zarówno wyszukiwanie, jak i agregację.
źródło
Jeśli chcesz uzyskać wszystkie unikalne wartości bez ustawiania magicznej liczby (
size: 10000
), użyj AGREGACJI KOMPOZYTU (ES 6.5+) .Z oficjalnej dokumentacji :
„Jeśli chcesz pobrać wszystkie terminy lub wszystkie ich kombinacje w zagnieżdżonej agregacji terminów , użyj AGREGACJI KOMPOZYTOWEJ która umożliwia stronicowanie wszystkich możliwych terminów zamiast ustawiania rozmiaru większego niż liczność pola w agregacji terminów. agregacja terminów ma na celu zwrócenie najpopularniejszych haseł i nie pozwala na podział na strony ”.
Przykład implementacji w JavaScript:
źródło