Я пытаюсь перечислить все сегменты в агрегации, но, кажется, показывает только первые 10.
Мой поиск:
curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
"size": 0,
"aggregations": {
"bairro_count": {
"terms": {
"field": "bairro.raw"
}
}
}
}'
Возвращает:
{
"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
} ]
}
}
}
У меня есть более 10 ключей для этой агрегации. В этом примере у меня будет 145 ключей, и я хочу подсчитать для каждого из них. Есть ли пагинация на ведрах? Могу ли я получить их все?
Я использую Elasticsearch 1.1.0
источник
size:0
. Вы можете прочитать об этом больше в этом выпускеЗаметка
"size":10000
Получите максимум 10000 ведер. По умолчанию 10."size":0
В результате"hits"
содержит 10 документов по умолчанию. Нам они не нужны.По умолчанию сегменты упорядочены по
doc_count
убыванию.Поскольку полевые данные по умолчанию отключены для текстовых полей . Если вы явно не выбрали отображение типа поля, у него есть динамические отображения по умолчанию для строковых полей .
Итак, вместо того, чтобы писать,
"field": "your_field"
вам нужно иметь"field": "your_field.keyword"
.источник
Увеличьте размер (2-й размер) до 10000 в вашей совокупности терминов, и вы получите контейнер размером 10000. По умолчанию он установлен на 10. Также, если вы хотите увидеть результаты поиска, просто установите 1-й размер на 1, вы можете см. 1 документ, поскольку ES поддерживает поиск и агрегацию.
источник
Если вы хотите , чтобы получить все уникальные значения , не устанавливая магическое число (
size: 10000
), а затем использовать КОМПОЗИТНУЮ агрегацию (ES 6.5+) .Из официальной документации :
«Если вы хотите извлечь все термины или все комбинации терминов в агрегации вложенных терминов, вам следует использовать КОМПОЗИЦИЮ СОСТАВЛЕНИЯ, которая позволяет разбивать на страницы по всем возможным терминам, а не устанавливать размер, превышающий количество элементов поля в агрегации терминов. Агрегирование терминов предназначено для возврата верхних терминов и не допускает разбиение на страницы. "
Пример реализации в JavaScript:
источник