반응형
Recent Posts
Recent Comments
관리 메뉴

개발잡부

글로벌 오디널(Global Ordinals)이란? 본문

ElasticStack/Elasticsearch

글로벌 오디널(Global Ordinals)이란?

닉의네임 2025. 4. 1. 13:59
반응형

Elasticsearch에서 eager_global_ordinals는 키워드와 같이 정렬, 집계 또는 필터링에 사용되는 필드의 고유 term들을 빠르게 참조하기 위해 내부적으로 생성하는 글로벌 오디널(Global Ordinals)을 인덱스 새로고침(refresh) 시점에 미리 계산하도록 지시하는 설정입니다.

 

 

글로벌 오디널(Global Ordinals)이란?

  • 정의:
    글로벌 오디널은 특정 필드의 모든 고유 term들을 정수 형태로 매핑한 데이터 구조로, 이를 통해 정렬, 집계, 필터링 등의 연산 시 문자열 비교 대신 정수 비교를 사용하여 성능을 개선할 수 있습니다.
  • 사용 목적:
    키워드 필드와 같은 텍스트 데이터를 대상으로 빠른 집계 및 정렬을 가능하게 하며, 이러한 작업의 속도와 메모리 효율을 높이는 역할을 합니다.

 

 

eager_global_ordinals의 동작 원리

  • 지연 계산(Lazy) vs. 선제 계산(Eager):
    기본적으로 글로벌 오디널은 처음 필요할 때 계산되지만, eager_global_ordinals 설정을 활성화하면 인덱스가 새로고침될 때마다 즉시 계산됩니다.
  • 장점:
    • 쿼리 실행 시 초기 오버헤드를 줄여 응답 속도를 향상시킵니다.
    • 집계나 정렬 등의 연산을 수행할 때, 이미 계산된 오디널을 활용할 수 있습니다.
  • 단점:
    • 인덱스 새로고침(refresh) 시 추가적인 계산 부하가 발생할 수 있습니다.
    • 자주 변경되지 않는 필드나 낮은 cardinality를 가진 필드에서는 반드시 필요하지 않을 수 있습니다.

 

설정 방법

필드 매핑 시, 해당 필드에 대해 eager_global_ordinals 옵션을 활성화할 수 있음.

PUT /my_index
{
  "mappings": {
    "properties": {
      "my_keyword_field": {
        "type": "keyword",
        "eager_global_ordinals": true
      }
    }
  }
}

 

 

언제 사용해야 할까

  • 빈번한 집계 및 정렬:
    다수의 집계(aggregations)나 정렬(sort) 쿼리가 해당 필드를 대상으로 이루어진다면 eager_global_ordinals를 활성화하여 쿼리 지연을 줄일 수 있습니다.
  • 높은 검색 성능 요구:
    사용자 경험을 위해 빠른 응답이 필요한 서비스에서는 이 옵션을 고려해볼 수 있습니다.
  • 인덱스 갱신 빈도가 낮은 경우:
    데이터 변경이 자주 일어나지 않는 경우, 새로고침 시 계산 부하가 크게 문제가 되지 않으므로 활성화하는 것이 유리합니다.

요약하면, eager_global_ordinals는 Elasticsearch가 글로벌 오디널을 미리 계산하여 쿼리 성능을 개선하는 기능으로, 필드에 대해 빠른 집계 및 정렬 성능을 필요로 하는 경우 유용하게 사용될 수 있습니다.

반응형

'ElasticStack > Elasticsearch' 카테고리의 다른 글

[es] top_hit  (0) 2024.10.15
[es] Shard 구성 변경  (0) 2024.08.13
[es] 샤드 구성 변경 테스트  (0) 2024.08.08
[es] data node cpu 튀는 현상  (0) 2024.07.31
[es] data node cpu 안정화  (1) 2024.07.19
Comments