Metrics, Bucket Aggregation

Han Hanju·2023년 7월 15일
0

Elasticsearch

목록 보기
7/10
post-thumbnail

Aggregation

  • v5.0이후로 집계기능이 대폭강화
  • ES는 많은 양의 데이터를 잘라서 관리
    • 문서의 수가 늘어나도 좀 더 실시간에 가깝게 처리가능
  • 데이터를 그룹화하고 통계값을 얻을 수 있음
  • Cost가 크다
  • master 노드가 노드의 데이터를 Aggregate해서 결과를 전달
  • 결과는 cache에 저장
    • 이미 계산된 결과는 Cache를 통해 빠르게 가져올 수 있다
  • 종류
    • metrics
    • bucket

Cache

Node Query Cache

  • query에 따른 결과를 cache
  • node 레벨로 동작
  • 캐시가 가득차면 최근에 가장 적게 사용된 쿼리결과가 제거됨(LRU)
  • 계산이 필요한 query, aggregation등은 node query cashe가 적용되지 않음
  • index.quereis.cashe.enabled: 활성화 유무
  • indices.queries.cache.size: 보통 heap 메모리의 1%사용
  • filter query만 cache

Shard Request Cache

  • 검색요청이 인덱스 또는 여러 인덱스에 대해 실행될때
  • 관련된 각 샤드는 검색을 로컬환경에서 실행 후 결과를 coordianting node로 반환
  • coordinating node는 각각의 결과를 수집하여 global 결과 집합으로 모음
  • 모은 후 , 각 샤드에서 로컬결과를 캐시
  • size: 0일때만 cache,문서를 리턴받지 않고 집계 데이터만 사용하는것
  • shard 단위로 캐싱
  • shard 내의 문서에 변화가 생기면 cache는 무효화
    • 문서의 변화가 거의없는 정적인 shard에서 사용하는것을 권장

Field Data Cache

  • 검색 결과가 포함된 문서를 빠르게 접근하기 위한 캐시
  • 집계 연산 수행할때 사용됨
  • 모든 필드의 값을 메모리에 로드, cost가 많이듬
    • 모니터링이 필수적
  • 일단 먼저 메모리에 데이터를 올리는 방식이기에 OOM발생가능
    • Circuit breaker 필요
      • 메모리에 올리기 전에 데이터의 사이즈를 측정하여 OOM을 막는 방식
  • indices.breaker.fielddata.limit로 제한 (default 40%)
  • indices.breaker.filddata.overhead: 메모리 오버헤드를 허용 (default:1.03)

Metrics, Bucket Aggregation

Metric Aggregation

  • 숫자 연산 할 수 있는 값들에 대한 agg
  • Bucket 단위로 특정 연산을 수행
  • sum, avg, max, min
  • stats: 기초통계
  • cardinality: 특정 field의 unique한 수 (근사치)
  • percentiles (근사치)
  • geo bound, geo centroid: 지리정보

Bucket Aggregation

  • 범위나 keyword 값 등을 가지고 문서를 그룹화
  • 조건으로 버킷들을 만들고 버킷안의 문서를 모아 그룹으로 구분
  • range: 숫자필드 값으로 범위를지정, 범위에 해당하는 버킷 생성
  • histogram: 주어진 간격 크기대로 버킷을 생성
  • terms: keyword필드의 문자열별 버킷 생성
  • bucket agg를 사용해서 만든 bucket안에 다시 agg또는 megrics agg를 만들 수 있음
    • 데이터 set을 메모리에 저장하는것, 중첩할수록 메모리 사용이 증가
  • search.max_bucket으로 최대 버킷 수 정의 가능
profile
Data Analytics Engineer

0개의 댓글