상위: Elasticsearch
요약
Aggregation(집계)은 검색 결과 집합에 대한 통계 및 그룹화 연산을 수행합니다. SQL의 GROUP BY, 통계 함수와 유사합니다.
Metric Aggregation
- 필드의 값을 계산하여 단일 값(또는 여러 통계 값)을 도출합니다.
- 종류:
avg,sum,min,max,stats(종합 통계),cardinality(고유 값 개수).
Bucket Aggregation
- 문서를 특정 기준에 따라 버킷(그룹)으로 나눕니다.
- 종류:
terms: 필드 값(Keyword) 기준 그룹화.range: 수치 범위 기준.date_histogram: 날짜/시간 간격 기준.histogram: 수치 간격 기준.
Pipeline Aggregation
- 다른 집계 결과를 입력으로 받아 추가 연산을 수행합니다 (예: 월별 매출의 평균).
예제
Metric Aggregation
GET products/_search
{
"size": 0,
"aggs": {
"average_price": {
"avg": { "field": "price" }
}
}
}
Bucket Aggregation
GET products/_search
{
"size": 0,
"aggs": {
"by_brand": {
"terms": {
"field": "brand",
"size": 10
}
}
}
}
집계 + 필터
GET products/_search
{
"size": 0,
"query": {
"term": { "brand": "Samsung" }
},
"aggs": {
"price_stats": {
"stats": { "field": "price" }
}
}
}
주의사항
text필드는 기본적으로 집계가 불가능합니다 (Fielddata를 켜야 하지만 메모리 문제로 비권장).keyword필드를 사용해야 합니다.