집계(aggregation)
- 검색 결과에 다양한 연산 적용
- RDBMS 의 groupby 와 유사
- 집계 종류에는 매트릭(metric), 버킷(bucket), 파이프라인(pipeline) 등이 있다.
0. 참고
본 포스트는 elastic search 버전 2.3 으로 작성되었습니다.
참고) https://www.elastic.co/
1. 종류
1) 매트릭 (metric)
- 도큐먼트를 계산해서 처리된 값을 구한다.
- 타입 리스트
- Avg Aggregation
- Cardinality Aggregation
- Extended Stats Aggregation
- Geo Bounds Aggregation
- Geo Centroid Aggregation
- Max Aggregation
- Min Aggregation
- Percentiles Aggregation
- Percentile Ranks Aggregation
- Scripted Metric Aggregation
- Stats Aggregation
- Sum Aggregation
- Top hits Aggregation
- Value Count Aggregation
2) 버킷 (bucket)
- 조건에 해당하는 도큐먼트를 버킷이라는 저장소 단위로 구분해 담아 새로운 집합을 생성한다.
- 타입 리스트
- Children Aggregation
- Date Histogram Aggregation
- Date Range Aggregation
- Filter Aggregation
- Filters Aggregation
- Geo Distance Aggregation
- GeoHash grid Aggregation
- Global Aggregation
- Histogram Aggregation
- IPv4 Range Aggregation
- Missing Aggregation
- Nested Aggregation
- Range Aggregation
- Reverse nested Aggregation
- Sampler Aggregation
- Significant Terms Aggregation
- Terms Aggregation
3) 파이프라인 (pipeline)
- 집계의 결과를 다른 집계에 활용한다.
- 레벨에 따라 부모/자식 집계로 나뉜다.
- buckets_path 지정 필수
- 타입 리스트
Avg Bucket Aggregation
Derivative Aggregation
Max Bucket Aggregation
Min Bucket Aggregation
Sum Bucket Aggregation
Stats Bucket Aggregation
Extended Stats Bucket Aggregation
Percentiles Bucket Aggregation
Moving Average Aggregation
Cumulative Sum Aggregation
Bucket Script Aggregation
Bucket Selector Aggregation
Serial Differencing Aggregation
2. 매트릭 집계 구조
GET /{index_name}/_search?pretty
{ "size": 0, "aggs": { // 집계 "my_aggs": { // 집계 명 (사용자 정의) "{metric_arrgs_type}": { // 집계 타입 "field": "{file_name}" // 집계 대상 필드 "order" : { "{field_name}" : "desc" } // 정렬 } } } } |
!!) 매트릭 집계중 카디날리티 집계(Cardinality Aggregation)은 근사 집계로 정확한 값이 대신 유사값을 구한다.
(카디날리티 집계(Cardinality Aggregation) 포스트 참고 )
3. 버킷 집계 구조
GET /{index_name}/_search?pretty
{ "size": 0, "aggs": { // 집계 "my_aggs": { // 집계 명 (사용자 정의) "{bucket_arrgs_type}": { // 집계 타입 "field": "{file_name}" // 집계 대상 필드 "order" : { "{field_name}" : "desc" } // 정렬 } } } } |
4. 파이프라인 집계 구조
GET /hotels/_search?pretty
{ "size": 0, "aggs": { "{parent_aggs_name}": { // 부모 집계 이름 (사용자 정의) "{bucket_type_name}": { // 버킷 집계 타입 이름 "field": "{field_name}" // 버킷 집계 대상 필드 }, "aggs": { "{aggs_name}": { // 집계 이름 (사용자 정의) "{metric_aggs_type}": { // 매트릭 집계 타입 "field": "{field_name}" // 매트릭 집계 대상 필드 } } } }, "{pipe_arrgs_name}": { // 파이프라인 집계 이름(사용자정의) "{pipe_arrgs_type}": { // 파이프라인 집계 타입 "buckets_path": "{parent_aggs_name} >{aggs_name}" // 경로 } } } } |