- 엘라스틱서치에서 집계는 데이터를 그룹핑하고 통곗값을 얻는 기능으로 SQL의 GROUP BY와 통계 함수를 포함하는 개념
- 키바나의 주 기능인 데이터 시각화와 대시보드는 대부분 집계 기능을 기반으로 동작
집계의 요청 - 응답 형태
요청 형태
GET <인덱스>/_search
{
"aggs": {
"my_aggs" : {
"agg_type": {
...
}
}
}
}
응답형태
{
...
"hits": {
"total": {
...
}
},
"aggreations": {
"my_aggs": {
"value": ...
}
}
}
종류
메트릭 집계
- 필드의 최소/최대/합계/평균/중간값 같은 통계 결과를 보여줌
매트릭 집계 |
설명 |
avg |
필드의 평균값을 계산한다. |
min |
필드의 최솟값을 계산한다 |
max |
필드의 최댓값을 계산한다 |
sum |
필드의 총합을 계싼한다. |
percentiles |
필드의 백분위 값을 계산한다. |
stats |
필드의 min, max, sum, avg, count를 한 번에 볼 수 있다. |
cardinality |
필드의 유니크한 값 개수를 보여준다. |
geo-centrold |
필드 내부의 위치 정보의 중심점을 계산한다. |
평균 값 avg
- size=0 설정을 하면 집계에 사용한 도큐먼트를 결과에 포함하지 않음으로써 비용 절약
GET kibana_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"stats_aggs": {
"avg": {
"field": "products.base_price"
}
}
}
}
25%, 50%(중간값) percentiles
GET kibana_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"stats_aggs": {
"percentiles": {
"field": "products.base_price",
"percents": [25, 50]
}
}
}
}
필드의 유니크한 값 개수 확인 cardi_aggs
- 필드의 유니크한 값들의 개수, SQL에 익숙하다면 distinct count
GET kibana_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"cardi_aggs":{
"cardinality": {
"field": "day_of_week"
}
}
}
}