전체 그래프
Elasticsearch

Aggregation

data-engineeringelasticsearchaggregationanalytics

상위: Elasticsearch

요약

Aggregation(집계)은 검색 결과 집합에 대한 통계 및 그룹화 연산을 수행합니다. SQL의 GROUP BY, 통계 함수와 유사합니다.

Metric Aggregation

  • 필드의 값을 계산하여 단일 값(또는 여러 통계 값)을 도출합니다.
  • 종류: avg, sum, min, max, stats (종합 통계), cardinality (고유 값 개수).

Bucket Aggregation

  • 문서를 특정 기준에 따라 버킷(그룹)으로 나눕니다.
  • 종류:
    • terms: 필드 값(Keyword) 기준 그룹화.
    • range: 수치 범위 기준.
    • date_histogram: 날짜/시간 간격 기준.
    • histogram: 수치 간격 기준.

Pipeline Aggregation

  • 다른 집계 결과를 입력으로 받아 추가 연산을 수행합니다 (예: 월별 매출의 평균).

예제

Metric Aggregation

GET products/_search
{
  "size": 0,
  "aggs": {
    "average_price": {
      "avg": { "field": "price" }
    }
  }
}

Bucket Aggregation

GET products/_search
{
  "size": 0,
  "aggs": {
    "by_brand": {
      "terms": {
        "field": "brand",
        "size": 10
      }
    }
  }
}

집계 + 필터

GET products/_search
{
  "size": 0,
  "query": {
    "term": { "brand": "Samsung" }
  },
  "aggs": {
    "price_stats": {
      "stats": { "field": "price" }
    }
  }
}

주의사항

  • text 필드는 기본적으로 집계가 불가능합니다 (Fielddata를 켜야 하지만 메모리 문제로 비권장). keyword 필드를 사용해야 합니다.