Как получить общее количество уникальных терминов для агрегатов с заданным размером? - PullRequest
0 голосов
/ 15 мая 2018

При использовании Термины агрегации в запросе ElasticSearch результат будет ограничивать сегменты до 10 лучших элементов или значения, заданного в параметре size . Например:

{
  "aggs" : {
    "cities" : {
      "terms" : { 
        "field" : "city",
        "size": 20
      }
    }
  }
}

Этот запрос даст мне 20 лучших сегментов и их количество. Как мне изменить этот запрос, чтобы узнать общее количество уникальных "city" терминов, чтобы я мог представить что-то вроде ", показывающий 20 лучших городов из 73 "?

1 Ответ

0 голосов
/ 15 мая 2018

Агрегирование кардинальности может быть запрошено по тому же запросу. Таким образом, на приведенном примере мы имеем:

{
  "aggs" : {
    "cities" : {
      "terms" : { 
        "field" : "city",
        "size": 20
      }
    },
    "unique_cities": {
      "cardinality": {
        "field": "city"
      }
    }
  }
}

И ответ "aggregations" будет иметь, кроме элемента "cities" (который содержит buckets), элемент "unique_cities" с количеством элементов:

"unique_cities": {
  "value": 73
}

Авторы этой проблемы на github: Возвращаемое количество сегментов для агрегирования терминов

...