본문 바로가기
DevOps/EFK stack

Elasticsearch (Aggregation)

by 푸푸망나뇽 2021. 6. 30.
반응형

 Aggregation 

Elasticsearch의 여러가지 연산이 가능한 기능으로 데이터를 그룹화하고 간단한 통계값을 얻을수 있는 기능이다.

_search API 에서 지정자 aggregations 또는 aggs를 명시하고 그 아래 임의의 이름을 입력한 뒤 사용할 aggregation 종류와 옵션들을 명시.

크게 두가지로 나뉘며 숫자 또는 날짜 연속형 변수의 계산은 Metrics, 

범위나 keyword 값 등을 가지고 도큐먼트들을 그룹화 Bucket

구문이나 옵션에 metrics 이거나 bucket 이라고 따로 명시를 하지는 않는다.

 

  • Metrics Aggregations

특정 query문에 대한 min,max,sum,avg

cardinality: 필드의 값이 모두 몇 종류인지 분포값

percentiles: Q1,Q2,Q3값 이외에 지정한 백분위구간에 위치한 값 출력

percentile_ranks aggregation:  값을 입력해서 그 값이 위치 해 있는 백분위를 볼 수 있음

 

사용 예)

test 인덱스의 name 필드 합 (sum) 을 가져오는 aggregations
GET test/_search
{
  "size": 0,
  "aggs": {
    "all_name": {
      "sum": {
        "field": "name"
      }
    }
  }
}

 

 

 

  •  Bucket Aggregations

주어진 조건으로 분류된 버킷 들을 만들고, 각 버킷에 소속되는 도큐먼트들을 모아 그룹으로 구분

 

range : 숫자 필드 값으로 범위를 지정하고 각 범위에 해당하는 버킷을 만드는 aggregation

histogram : from, to 대신 interval 옵션을 이용해서 주어진 간격 크기대로 버킷을 구분

terms: keyword 필드의 문자열 별(범주형변수 별로)로 버킷을 나누어 집계

 

 

Bucket Aggregation 으로 만든 버킷들 내부에 다시 "aggs" : { } 를 선언해서 또다른 버킷을 만들거나 Metrics Aggregation 을 만들어 사용이 가능

예) terms 버킷별로 metrics 특정필드의 평균을 구하기.

 

사용 예)

range aggregations 를 이용해서 age 필드의 값을 버킷으로 구분
GET test/_search
{
  "size": 0,
  "aggs": {
    "age_range": {
      "range": {
        "field": "age",
        "ranges": [
          {
            "to": 10
          },
          {
            "from": 10,
            "to": 40
          },
          {
            "from": 40
          }
        ]
      }
    }
  }
}

 


참고

https://esbook.kimjmin.net/08-aggregations

 

8. 집계 - Aggregations

이 문서의 허가되지 않은 무단 복제나 배포 및 출판을 금지합니다. 본 문서의 내용 및 도표 등을 인용하고자 하는 경우 출처를 명시하고 김종민(kimjmin@gmail.com)에게 사용 내용을 알려주시기 바랍

esbook.kimjmin.net

 

반응형

'DevOps > EFK stack' 카테고리의 다른 글

Kubernetes + EFK stack 배포하기  (0) 2021.04.29
MSA  (0) 2021.04.06
Fluentd & Kibana  (0) 2021.04.03
Elasticesearch 란? (DSL query)  (0) 2021.04.03

댓글