LLM WikiAccess-protected knowledge portal

WIKI

Elasticsearch 9.5: columnar 인덱스 모드와 logsdb_columnar로 로그 스토리지를 줄이는 방법

요약 2026년 8월 4일 출시된 Elasticsearch 9.5 의 핵심은 컬럼형 인덱스 모드 Tech Preview 다. 루씬이 색인마다 함께 만드는 역인덱스·BKD 트리·doc values 중 doc values만 남기고 나머지를 건너뛰어, 로그·지표 같은 append only 분석 워크로드에서 스토리지를 줄이는 것이 목표다. 주요 변화 columnar 인덱스 모드 Tech Preview 역인덱스·BKD 트리 없이 doc

경로human/study/content/database-frontier/92-elasticsearch-9-5-columnar-mode-logsdb-vectordb-index.md
카테고리Study
태그#ai-review #columnar #logsdb #mode #monitoring #mysql #study #vectordb

요약

2026년 8월 4일 출시된 Elasticsearch 9.5의 핵심은 컬럼형 인덱스 모드(Tech Preview)다. 루씬이 색인마다 함께 만드는 역인덱스·BKD 트리·doc values 중 doc values만 남기고 나머지를 건너뛰어, 로그·지표 같은 append-only 분석 워크로드에서 스토리지를 줄이는 것이 목표다.

주요 변화:

이전 챕터(database-frontier/17)에서 다룬 Elastic 9.4의 GPU 벡터 인덱싱·Prometheus TSDB 대체·FIPS 140-3과 달리, 9.5는 저장 구조 자체를 선택 가능하게 만드는 방향으로 진화했다.


1. columnar 인덱스 모드: 루씬에서 필요한 구조만 남기기

기존 루씬 인덱스가 저장하는 것들

루씬은 필드 하나를 색인할 때 여러 자료구조를 동시에 생성한다.

자료구조목적지원 쿼리 유형
역인덱스(Inverted Index)특정 텀을 포함하는 문서 찾기match, term, prefix
BKD 트리(Block KD-tree)숫자·날짜·지리 범위 색인range, geo_bounding_box
Doc Values도큐먼트별 필드값 정렬·집계agg, sort, scripted_field
Stored Fields원본 값 반환_source, fields

로그 파이프라인의 일반적인 패턴은 @timestamp 기준 집계와 host.name·service.name 기준 집계다. 역인덱스와 BKD 트리는 거의 쓰지 않지만, 색인할 때마다 함께 만들어지고 디스크를 차지한다. 특히 고카디널리티 필드에서는 역인덱스 크기가 doc values보다 커지는 경우도 있다.

index.mode: columnar가 바꾸는 것

columnar 모드는 역인덱스와 BKD 트리 생성을 건너뛴다. 각 필드에 doc values만 기록한다.

PUT /my-logs
{
  "settings": {
    "index": {
      "mode": "columnar"
    }
  }
}

결과는 두 가지다. 스토리지가 줄고, 역인덱스·BKD 트리에 의존하는 쿼리가 불가능해진다.

가능한 연산:

불가능한 연산:

Tech Preview 주의: 9.5 기준으로 columnar 모드는 실험적이다. 9.6 GA 전까지 매핑 동작이나 제약 조건이 변경될 수 있다.


2. logsdb_columnar 모드: 로그 워크로드 전용 조합

logsdb가 추가하는 것들

기존 logsdb 모드는 로그 인덱싱 최적화를 묶어둔 사전 설정이다.

logsdb_columnar는 이 기본값에 columnar 스토리지를 결합하면서 message 필드 하나에만 역인덱스를 유지한다. grep 패턴의 로그 검색(message: "OOM", message: "timeout")을 지원하기 위한 최소한의 타협이다.

PUT /my-logs-columnar
{
  "settings": {
    "index": {
      "mode": "logsdb_columnar"
    }
  }
}

나머지 구조적 필드(숫자, 키워드, IP, 날짜)는 doc values로만 저장된다.


3. 아키텍처 비교: 네 가지 인덱스 모드

standard
역인덱스
BKD 트리
Doc Values
Stored Fields
풀텍스트·범위·집계 모두
스토리지 최대
logsdb
역인덱스
BKD 트리
Doc Values
_source 합성
로그 정렬 기본값
스토리지 중간
columnar (신규 TP)
역인덱스 ✗
BKD 트리 ✗
Doc Values
Stored Fields ✗
집계 전용
스토리지 최소
logsdb_columnar (신규 TP)
역인덱스 (message만)
BKD 트리 ✗
Doc Values
_source 합성
로그 집계 + 키워드 검색
스토리지 소형
Elasticsearch 9.5 인덱스 모드별 저장 구조 비교

선택 기준 요약:


4. VectorDB 인덱스 모드: DiskBBQ 자동 보정

수동 튜닝의 문제

vectordb 인덱스 모드는 ANN(Approximate Nearest Neighbor) 검색 특화 사전 설정이다. 내부적으로 DiskBBQ(Disk-Based Binary Quantization) 알고리즘으로 벡터를 압축해 디스크에 저장하고, 검색 시 HNSW 그래프를 탐색한다.

9.4까지는 양자화 깊이(quantization bits), 프리컨디셔닝(preconditioning), 오버샘플링(oversampling) 파라미터를 수동으로 조정해야 했다. 데이터셋마다 벡터 분포가 달라 최적값이 달리 나타나기 때문에, 운영자가 실험으로 결정해야 했다.

9.5의 자동 보정

9.5는 색인 시점에 벡터 분포를 샘플링해 파라미터를 자동으로 결정한다.

PUT /my-vectors
{
  "settings": {
    "index": {
      "mode": "vectordb"
    }
  },
  "mappings": {
    "properties": {
      "embedding": {
        "type": "dense_vector",
        "dims": 1536,
        "index": true,
        "similarity": "cosine"
      }
    }
  }
}

9.5부터는 위 설정만으로 DiskBBQ 파라미터가 자동으로 선택된다. 벡터 필드에 별도 index_options를 지정하지 않아도 된다.

자동 보정 대상 파라미터:

파라미터9.4 기본값9.5 동작
양자화 깊이4비트 고정벡터 분포에 따라 4–8비트 자동 선택
프리컨디셔닝비활성분포 분산 기반 자동 활성 여부 결정
오버샘플링 비율3× 고정recall 추정 기반 자동 조정

Open question: 자동 보정의 recall 목표 기준과 내부 알고리즘 세부 사항은 9.6 GA 문서에서 확인 필요.


5. Anthropic Claude API 관측성 통합

9.5는 Elastic Observability에 Anthropic Claude API 통합을 추가했다. Claude API를 호출하는 서비스에서 OpenTelemetry 계측을 통해 LLM 호출 정보를 자동으로 수집한다.

수집되는 시맨틱 컨벤션 지표:

지표설명
gen_ai.client.token.usage입력·출력 토큰 수
gen_ai.client.operation.durationAPI 호출 레이턴시
gen_ai.request.model요청 모델 ID
gen_ai.response.finish_reason완료 사유 (stop, max_tokens 등)

기존에 OpenAI·Amazon Bedrock·Google Vertex AI 통합이 있었고, 9.5에서 Anthropic이 추가된 형태다. Kibana의 AI Assistant 대시보드에서 모델별·엔드포인트별 비용 추적이 가능하다.


6. 운영 체크리스트: 9.4 → 9.5 업그레이드

columnar 모드 도입 판단 기준

다음 조건을 모두 충족하는 인덱스가 logsdb_columnar 전환 후보다.

순수 집계·타임라인 조회만 하는 인덱스는 columnar, message 키워드 검색이 있으면 logsdb_columnar를 선택한다.

Tech Preview 관련 주의사항

기존 logsdb 인덱스를 logsdb_columnar로 직접 변경할 수 없다. 인덱스 모드는 생성 시 설정하며 변경이 불가능하다. ILM 정책과 함께 쓰는 경우에는 신규 인덱스 템플릿에 모드를 지정하고, 기존 인덱스는 롤오버(rollover) 후 신규 인덱스부터 적용한다.

PUT /_index_template/my-logs-template
{
  "index_patterns": ["my-logs-*"],
  "template": {
    "settings": {
      "index": {
        "mode": "logsdb_columnar"
      }
    }
  }
}

vectordb 자동 보정 확인

# 색인 후 세그먼트 정보로 양자화 설정 확인
GET /my-vectors/_segments?verbose=true

# kNN 검색 프로파일로 후보 수·오버샘플링 비율 확인
GET /my-vectors/_search
{
  "profile": true,
  "knn": {
    "field": "embedding",
    "query_vector": [0.1, 0.2],
    "k": 10,
    "num_candidates": 100
  }
}

7. 9.4와의 비교

구분Elastic 9.4Elastic 9.5
벡터 인덱싱GPU 가속 (12× 빠른 빌드)DiskBBQ 파라미터 자동 보정
인덱스 모드 신규columnar, logsdb_columnar (Tech Preview)
로그 스토리지logsdblogsdb_columnar (역인덱스 최소화)
LLM 관측성OpenAI·Bedrock·Vertex+ Anthropic Claude
FIPS140-3 완성유지
출시일2026-062026-08-04

References