Показать все результаты агрегации Elasticsearch / сегменты, а не только 10



Я пытаюсь перечислить все ведра на агрегации, но он, кажется, показывает только первые 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

714   4  

4 ответов:

параметр size должен быть параметром для примера запроса терминов:

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

как уже упоминалось в документе работает только для версии 1.1.0 и далее

Edit

обновление ответа на основе комментария @PhaedrusTheGreek.

задание size:0 является устаревшим в 2.x и далее, из-за проблем с памятью, вызванных вашим кластером с высокими значениями поля мощности. Вы можете прочитать больше об этом в github проблема .

Это рекомендуется явно установить разумное значение для size число от 1 до 2147483647.

как показать все ведра?

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

Примечание

  • "size":10000 получить не более 10000 ведер. По умолчанию-10.

  • "size":0 в результате "hits" содержится 10 документов по умолчанию. Они нам не нужны.

  • по умолчанию ведра упорядочены по doc_count в порядке убывания.


почему Я получаю Fielddata is disabled on text fields by default ошибка?

, потому что fielddata отключена в текстовых полях по умолчанию. Если вы не выбрали неявно отображение типа поля, оно имеет динамические сопоставления по умолчанию для строковых полей.

Итак, вместо того, чтобы писать "field": "your_field" вам нужно "field": "your_field.keyword".

Но, кстати, на https://github.com/elasticsearch/elasticsearch/issues/1776

is был закрыт в июне 22, мой elasticsearch был загружен и установлен до этого дня, так что предположим, что вы можете получить его, если есть последняя версия

Увеличьте размер (2-й размер) до 10000 в агрегациях терминов ur, и u получит ведро размера 10000.By по умолчанию его значение равно 10. Кроме того, если вы хотите увидеть результаты поиска ,просто сделайте 1-й размер до 1, Вы можете увидеть 1 документ, так как ES поддерживает как поиск, так и агрегацию.

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

         }
      }
   }
}'

Comments

    Ничего не найдено.