해당 글은 인프런 Minsuk Heo 님의 ELK 강의를 듣고 정리한 내용입니다.
Elastic Search 에서 Aggregations 은 document 값들 안에서 조합을 통해 새로운 값을 도출하고 싶을 때 사용합니다.
크게 Metric Aggregation 와 Bucket Aggregation 을 알아보겠습니다.
Metric Aggregation
산술할 때 사용되는 Aggregation 입니다. 주로 최대값, 최소값, 평균 등을 구할 때 사용됩니다.
points 값의 평균을 구하는 예제를 살펴보겠습니다.
우선 원하고자 하는 Aggregation 파일을 생성합니다.
# avg_points_aggs.json
{
"size" : 0, # 원하는 값만 보기 위함
"aggs" : { # 보통 이렇게 약자로 사용
"avg_score" : { # aggs 의 name
"avg" : { # 구하고 싶은 값
"field" : "points" # 적용할 속성
}
}
}
}
그 후 Aggregation 파일을 Elastic Search 에서 curl Command 로 실행한다.
curl -XGET localhost:9200/_search?pretty --data-binary @avg_points_aggs.json -H 'Content-Type:application/json'
원하는 값이 json 포맷에 맞추어 "aggregations" 키의 값으로 출력되는 것을 확인할 수 있다.
다양한 연산을 조회하는 Aggregation 을 작성하면 다음과 같다. format 은 비슷하며 상황에 맞게 수정하면 된다.
# stats_points_aggs.json
{
"size" : 0, # 원하는 값만 보기 위함
"aggs" : { # 보통 이렇게 약자로 사용
"stats_score" : { # aggs 의 name
"stats" : { # 구하고 싶은 값
"field" : "points" # 적용할 속성
}
}
}
}
Bucket Aggregation
주로 그룹핑 할 때 사용되는 Aggregation 입니다.
예제를 살펴보겠습니다.
원하고자 하는 Aggregation 파일을 작성합니다.
# terms_aggs.json
{
"size" : 0, # 원하는 값만 보기 위함
"aggs" : { # 보통 이렇게 약자로 사용
"players" : { # aggs 의 name
"terms" : { # 구하고 싶은 값
"field" : "team" # 적용할 속성
}
}
}
}
해당 Aggregation 파일을 Elastic Search 에서 curl Command 로 실행하게 되면, team 별로 몇개의 document 가 있는지 그 이름과 수 값이 나오게 된다.
❗️ Aggregation 을 통해 원하는 데이터 별로 통계를 내고 싶을 때 그룹핑해 원하는 데이터를 만들고 추출할 수 있다.
Q. 현실 세계에서 있을법한 예제를 들어보자. 우리는 MBA 팀에 데이터분석가로 취직해 첫 업무를 맡았다. 각 팀마다 경기 별 평균 점수, 최소 점수, 최대 점수, 통합 점수를 분석해야한다. 어떻게 해야할까 ?
A. 답은 간단하다. 지금까지 배운 Aggregations 를 통합해 작성한 후, curl Command 를 Elastic Search 를 통해 실행하면 된다.
# stats_by_team.json
{
"size" : 0,
"aggs" : {
"team_stats" : {
"terms" : {
"field" : "team" # 우선 팀별로 그룹핑을 진행한다.
},
"aggs" : {
"stats_score" : {
"stats" : {
"field" : "points" # 그룹핑한 데이터를 기준으로 stats 연산을 실행한다.
}
}
}
}
}
}
'개인 공부 > ELK' 카테고리의 다른 글
[Elastic Search] Mapping 의 중요성 (2) | 2023.10.22 |
---|---|
[ElasticSearch] 기초 CURD와 Bulk Update (0) | 2023.10.22 |
[ElasticSearch] 기본 개념 익히기 (2) | 2023.10.22 |