1. ELK 엘라스틱서치 Bucket Aggregation
Bucket Aggregation이란?
집계는 데이터를 그룹화하고 통계치를 얻는 기능입니다. SQL GROUP BY 및 SQL 집계 기능과 대략 같다고 보면 가장 쉽게 이해할 수 있습니다. Elasticsearch에서는 하나의 응답에서 검색 적중을 반환하는 검색을 실행함과 동시에 그와는 별도로 집계 결과를 반환할 수 있습니다. 즉 간결한 API를 사용하여 쿼리와 여러 집계를 실행하고 두 작업(또는 둘 중 하나)의 결과를 한꺼번에 얻어 네트워크 왕복을 피할 수 있다는 점에서 강력하고 효율적입니다.
요약하면, 평균을 구할때는 Matrix Aggregation을 사용하고 Bucket Aggregation은 그룹 및 통계치 기능하는 종류중 하나입니다.
AGGREGATIONS STRUCTURE(어그리게이션 구조)
1 | GET <인덱스명>/_search |
Aggregation 에는 크게 Metrics 그리고 Bucket 두 종류가 있습니다. Aggregations 구문이나 옵션에 metrics 이거나 bucket 이라고 따로 명시를 하지는 않습니다. Aggregation 종류들 중 숫자 또는 날짜 필드의 값을 가지고 계산을 하는 aggregation 들을 metrics aggregation 이라고 분류하고, 범위나 keyword 값 등을 가지고 도큐먼트들을 그룹화 하는 aggregation 들을 bucket aggregation 이라고 분류 합니다.
basketball 인덱스 생성
1 | curl -XPUT -H 'Content-Type:application/json' localhost:9200/basketball |
baseketball 인덱스 매핑 조회
해당 basketball_mapping JSON값들을 확인해보겠습니다.
1 | $vi basketball_mapping.json |
baseketball 매핑 타입 삽입
1 | curl -XPUT -H 'Content-Type:application/json' 'localhost:9200/basketball/record/_mapping&include_type_name=true' -d @basketball_mapping.json |
의미
basketball: Index
record: Type
_mapping: Mapping
-d: direct
baseketball documents 삽입
twoteam_basketball.json
1 | { "index" : { "_index" : "basketball", "_type" : "record", "_id" : "1" } } |
document삽입
1 | curl -XPOST -H 'Content-Type:application/json' 'localhost:9200/_bulk' --data-binary @twoteam_basketball.json |
Term Aggregation(GROUP BY TEAM)
terms_aggs.json 데이터 확인
1 | vi terms_aggs.json |
terms_aggs.json 조회
1 | $curl -XGET -H 'Content-Type:application/json' 'localhost:9200/_search?pretty' --data-binary @terms_aggs.json |
다음과 같이 정상적으로 Aggregation을 조회해온것을 확인할 수 있습니다.
AGGS(STATS GROUP BT TEAM)
vi stats_by_team.json 데이터확인
1 | $vi stat_by_team.json |
Aggregation 내용 확인하기
size는 보기편하기위해서 넣어준 속성이되고, 팀별로 documents들을 묶고, 나머지 어그리제이션을 사용하여 점수별로 Stat를 한번 표시해라 라는 의미가 됩니다. 각 팀별로 통계분석을 도출하면 되는 뜻입니다.
AGGS(STATS GROUP BT TEAM)조회
결과값 데이터가 제대로 들어가지않은부분이 있어서 다시 수정 필요.
1 | curl -XGET -H 'Content-Type:application/json' 'localhost:9200/_search?q=points&pretty' --data-binary @stats_by_team.json |
Reference
https://esbook.kimjmin.net/08-aggregations/8.2-bucket-aggregations