집계(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}" // 경로

         }

      }

   }

} 




+ Recent posts