Terms Aggregation (텀즈 집계)

텀즈 집계는 버킷이 동적으로 생성되는 다중 버킷 집계다. 지정한 필드에 대해 빈도수가 높은 텀의 순위로 결과가 반환된다. 이를 통해 가장 많이 접속하는 사용자/국가 등의 빈도수를 추출한다거나 할수 있다. 일종의 Group by Count 다.

텀즈 집계는 각 샤드에 집계를 요청하고 각 샤드는 집계 결과에 대해서 정렬을 수행해서 자체적인 뷰를 만든다. 그리고 주어진 size만큼 상위 결과를 취합하여 최종 뷰를 만들어낸다.

⚠️ 그래서 개별 샤드 결과의 size 순위에 포함되지 않는다면 결과가 정확하지 않을 수 있음을 알고 사용해야한다.

GET /apache-web-log/_search?size=0
{
  "aggs": {
    "reqeust count by country": {
      "terms": {
        "field": "geoip.country_name.keyword"
      }
    }
  }
}
# 결과
{
  "aggregations" : {
    "reqeust count by country" : {
      "doc_count_error_upper_bound" : 47,
      "sum_other_doc_count" : 2334,
      "buckets" : [
        {
          "key" : "United States",
          "doc_count" : 3974
        },
        {
          "key" : "France",
          "doc_count" : 855
        },
        {
          "key" : "Germany",
          "doc_count" : 510
        },
        ...
      ]
    }
  }
}