메트릭 집계
- 필드에 대해 통계, 계산하는 집계
- 메트릭 집계 종류
avg
: 필드 평균값
min
: 필드 최소값
max
: 필드 최대값
sum
: 필드 총합
count
: document 수
percentiles
: 필브 백분위값 계산
stats
: min
, max
, sum
, avg
, count
를 모두 계산
cardinality
: 필드의 유니크한 값 개수
geo-centroid
: 위치 정보의 중심점 계산
버킷 집계
- document 를 그룹핑하여 집계
- 많이 사용하는 버킷 집계들
histogram
: 숫자 필드를 일정 간격으로 분류
date_histogram
: 날짜/시간 필드를 일정 간격으로 분류
range
: 숫자 필드를 사용자 범위 간격 분류
date_range
: 날짜/시간 필드를 사용자 지정 범위 간격 분류
terms
: 필드 값의 빈도 수에 따라 분류
- ex) 9월
traffic
인덱스에서 9월 트래픽을 분 단위로 sum 하여 집계
group_id
가 9 또는 10인 조건, 9월 시간 범위
group_id
필드를 기준으로 버킷 집계 수행
bucket_aggs
정의한 부분
bucket_aggs
내 "size":999
부분은 버킷의 갯수 (기본값 10
)
"size":0
은 집계에 사용된 document 를 조회하지 않는다는 의미
- document 를 조회하지 않기 때문에
_source
가 없어도 동일한 결과를 가져옴
_source
: 검색 결과로 조회할 필드 지정
GET traffic/_search
{
"query": {
"bool": {
"should": [
{"match" : { "group_id" : 9} },
{"match" : { "group_id" : 10} }
],
"must": [
{
"range": {
"time": {
"from": "2022-09-01 00:00:00",
"to": "2022-09-31 23:59:59"
}
}
}
]
}
},
"size":0,
"aggs": {
"bucket_aggs": {
"terms": {
"field" : "group_id",
"size": 999
},
"aggs": {
"sum_traffic_aggs": {
"date_histogram": {
"field": "time",
"calendar_interval": "minute"
},
"aggs": {
"summary_aggs": {
"sum": {
"field": "traffic_value"
}
}
}
}
}
}
}
}