텀즈 집계는 버킷이 동적으로 생성되는 다중 버킷 집계다. 지정한 필드에 대해 빈도수가 높은 텀의 순위로 결과가 반환된다. 이를 통해 가장 많이 접속하는 사용자/국가 등의 빈도수를 추출한다거나 할수 있다. 일종의 Group by Count 다.
keyword 타입 또는 버킷 집계에 적합한 타입이어야 한다.text 타입에 사용하려면 fielddata를 사용하거나 멀티 필드로 구성해야함텀즈 집계는 각 샤드에 집계를 요청하고 각 샤드는 집계 결과에 대해서 정렬을 수행해서 자체적인 뷰를 만든다. 그리고 주어진 size만큼 상위 결과를 취합하여 최종 뷰를 만들어낸다.
⚠️ 그래서 개별 샤드 결과의 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
},
...
]
}
}
}