after_key(Composite Aggregation)
Composite Aggregation 응답에 포함된, 소스별 값 하나씩을 담은 커서. 다음 페이지 요청의 after 파라미터에 그대로 넣으면 그 지점부터 이어서 버킷을 조회할 수 있다.
Composite Aggregation — 집계 버킷도 스크롤하듯 페이지네이션한다
· Elastic 공식문서 Composite aggregation
alias (인덱스 별칭)
하나 이상의 실제 인덱스를 가리키는 심볼릭 링크 같은 이름. 애플리케이션이 alias만 바라보게 하면, 실제 인덱스를 alias 재지정만으로 원자적으로 교체할 수 있다.
재색인(Reindex)과 alias — 매핑을 바꾸는 무중단 전환
· Elastic 공식 블로그 'Changing Mapping with Zero Downtime'
Analyzer
원문 텍스트를 검색 가능한 토큰으로 바꾸는 파이프라인. character filter → tokenizer → token filter 순으로 구성된다.
매핑과 분석기 — 필드 타입, 토크나이저·필터 파이프라인
BM25
Elasticsearch의 기본 관련도 스코어링 알고리즘. TF-IDF를 개선해 단어 빈도를 포화시키고 문서 길이로 정규화한다.
역인덱스와 Lucene — BM25 스코어링과 세그먼트
Completion Suggester
역인덱스가 아니라 색인 시점에 만들어 메모리에 올려두는 FST(finite state transducer) 자료구조를 이용해 자동완성 결과를 즉각 반환하는 Elasticsearch 기능.
Completion Suggester — 역인덱스 대신 FST로 만드는 즉각 반응 자동완성
· Elastic 공식 문서 Search suggesters — Completion suggester
Continuous Transform
Transform을 주기적 체크포인트 기반으로 계속 실행해, 마지막 체크포인트 이후 변경된 엔티티만 다시 집계·반영하는 증분 처리 모드. 시계열 전용인 Downsampling과 달리 임의의 group-by 축에 범용적으로 적용된다.
Transform API — 이벤트 로그를 엔티티 중심 뷰로 재구성한다
· Elastic 공식문서 Transforms overview
Coordinating Node
master/data/ingest 전용 역할이 없는 노드. 요청을 적절한 샤드로 라우팅하고 검색 결과의 reduce(병합) 단계를 수행한다.
클러스터, 노드 역할, 샤드와 레플리카
Cross-Cluster Replication(CCR)
리더 클러스터의 인덱스를 팔로워 클러스터로 지속적으로 복제하는 기능. CCS(쿼리 시점 연합)와 달리 데이터 자체를 실제로 복사해 동기화된 사본을 유지한다.
Cross-Cluster Search와 Cross-Cluster Replication — 클러스터 경계를 넘는 두 가지 다른 방법
· Elastic 공식 문서 Remote clusters
Cross-Cluster Search(CCS)
여러 클러스터에 있는 인덱스를 데이터 복사 없이 조회하는 기능. 검색 요청이 원격 클러스터에서 실행되고 결과만 반환되는 쿼리 시점 연합 방식.
Cross-Cluster Search와 Cross-Cluster Replication — 클러스터 경계를 넘는 두 가지 다른 방법
· Elastic 공식 문서 Remote clusters
cross_fields
multi_match의 한 타입. 여러 필드를 하나의 논리적 필드로 취급해, 검색어의 각 단어가 어느 필드에 있든 매칭되면 인정하는 term-centric 매칭 방식.
multi_match 쿼리 타입 — best_fields/most_fields/cross_fields
· Elastic 공식 문서 Multi-match query
dense_vector
임베딩 모델이 생성한 고차원 숫자 벡터를 저장하는 Elasticsearch 필드 타입. kNN 검색의 대상이 된다.
벡터 검색과 kNN — HNSW 근사 최근접 이웃
· Elastic 공식 문서 dense-vector, kNN search 가이드
doc_values
집계·정렬을 위해 필드 값을 문서ID 순서의 컬럼형으로 디스크에 미리 저장해두는 구조. keyword/숫자/날짜 필드는 기본적으로 doc_values가 활성화되어 있어 집계가 메모리 효율적이다.
집계(Aggregations) — 버킷·메트릭·파이프라인과 fielddata 함정
Document Level Security(DLS)
role 정의에 포함된 쿼리로 사용자가 읽을 수 있는 문서 범위를 제한하는 기능. 인덱스/데이터스트림 단위로 쿼리를 지정하며, Query DSL 전체와 동적 사용자 속성을 활용할 수 있다.
Document/Field Level Security — role 하나로 '어떤 문서·필드까지' 보여줄지 통제하기
· Elastic 공식문서 Controlling access at the document and field level
Downsampling
시계열 데이터 스트림(TSDS)의 오래된 데이터를 지정한 간격으로 집계·압축해 저장 공간을 줄이는 기능. cron 기반 job이나 전용 검색 API 없이 ILM/DSL에 통합돼 동작하며, deprecated된 Rollup의 공식 후속 기능이다.
Downsampling — Rollup을 대체하는 시계열 데이터 압축
· Elastic 공식 문서 Migrating from rollups to downsampling
ES|QL
파이프(|) 기호로 명령을 순서대로 이어붙여 데이터를 필터링·집계·변환하는 Elasticsearch의 쿼리 언어. FROM으로 시작해 WHERE/STATS/SORT/LIMIT 등의 명령을 순차 연결한다.
ES|QL — 파이프로 데이터를 다루는 새로운 쿼리 언어
· Elastic 공식 문서 ES|QL
Field Capabilities API(_field_caps)
여러 인덱스(또는 데이터 스트림의 백업 인덱스들)에 걸쳐 특정 필드의 타입·검색가능여부·집계가능여부를 한 번에 조회하는 API. 같은 필드가 인덱스마다 다른 타입으로 매핑된 스키마 불일치를 찾는 데 쓰인다.
Field Capabilities API — 여러 인덱스에 걸친 필드 정의 불일치를 찾는다
· Elastic 공식문서 Field capabilities API
Field Collapsing
검색 결과(top hits)를 지정한 필드 값 기준으로 그룹핑해 그룹당 대표 문서 하나만 남기는 기능. 단일값 keyword/숫자 필드(doc_values 필요)에만 적용 가능하며, 같은 요청의 집계에는 영향을 주지 않는다.
Field Collapsing — 검색 결과를 그룹당 하나로 접는다
· Elastic 공식문서 Collapse search results
Fielddata Circuit Breaker
필드를 fielddata 캐시로 로딩하기 전에 필요한 힙 메모리를 추정해, 한도를 초과하면 로딩 자체를 차단하는 서킷 브레이커. elasticsearch-learn-06의 fielddata 메모리 폭발 문제를 실제로 막는 장치다.
Circuit Breaker — 메모리가 터지기 전에 요청을 먼저 거절한다
· Elastic 공식문서 Circuit breaker settings
Filter Context
쿼리 절이 관련도 점수를 계산하지 않고 참/거짓만 판단하는 실행 맥락. must_not과 filter 절이 여기 해당하며, 결과가 캐시 가능하다.
Query DSL — bool 쿼리와 must/filter 컨텍스트
Force Merge API
shard의 세그먼트를 지정한 개수(max_num_segments)까지 강제로 병합하는 API. 더 이상 쓰기를 받지 않는 인덱스에만 권장되며, 쓰기 중인 인덱스에 걸면 자동 병합 대상이 안 되는 초대형 세그먼트가 생길 위험이 있다.
Force Merge — 더 이상 안 바뀔 인덱스만 손대는 수동 압축
· Elastic 공식문서 Force merge API
geo_shape
점뿐 아니라 선, 원, 다각형, 다중다각형 같은 임의의 지리 도형을 표현할 수 있는 Elasticsearch 필드 타입. 단순 좌표 하나만 표현하는 geo_point보다 표현력이 넓다.
Geo 쿼리 — geo_point와 geo_shape로 위치 데이터를 검색한다
· Elastic 공식문서 Geopoint field type, Geo queries
Global Ordinal
keyword 등 term 기반 필드에서 각 고유 값에 부여하는 정수 번호. 집계 시 문자열 비교 대신 정수 비교로 처리할 수 있게 해 성능을 높인다. 샤드 전체 기준으로 재계산되며 그 계산 비용이 필드의 카디널리티에 비례한다.
eager_global_ordinals — 집계 비용을 색인 시점으로 미리 당겨온다
· Elastic 공식문서 eager_global_ordinals, Improving the performance of high-cardinality terms aggregations
HNSW (Hierarchical Navigable Small World)
근사 최근접 이웃 검색을 위한 그래프 기반 인덱스 구조. 벡터들을 계층적 그래프로 연결해두어 전수 비교 없이 빠르게 가까운 이웃을 찾는다.
벡터 검색과 kNN — HNSW 근사 최근접 이웃
· Elastic 공식 문서 dense-vector, kNN search 가이드
ILM (Index Lifecycle Management)
인덱스를 나이/크기/문서 수 조건에 따라 Hot-Warm-Cold-Frozen-Delete 단계로 자동 이동시키는 정책 기능.
ILM과 데이터 스트림 — Hot-Warm-Cold-Frozen 계층과 샤드 운영
Index Sorting
색인 시점에 index.sort.field/index.sort.order 설정으로 세그먼트 안 문서의 물리적 저장 순서를 지정하는 기능. 검색 시점의 정렬 기준과 이 순서가 일치하면 조기 종료(early termination)로 쿼리 속도를 크게 높일 수 있다.
Index Sorting — 쓰기 비용을 미리 치르고 정렬 쿼리를 조기 종료시킨다
· Elastic 공식문서 Index sorting settings, 공식 블로그 Optimizing sort queries
Ingest Pipeline
문서가 색인되기 직전에 순차 적용되는 프로세서 체인. ingest 노드가 이를 실행한다.
Ingest Pipeline과 프로세서 — 색인 전 데이터 가공
· Elastic 공식 문서 Ingest APIs, Grok processor
nested 타입
객체 배열의 각 원소를 평탄화하지 않고 별도의 숨은 Lucene 문서로 색인하는 필드 타입. 같은 배열 원소 내 필드 간 연관관계를 보존하며, 반드시 nested 쿼리로만 조회할 수 있다.
Nested 타입 — 객체 배열의 필드가 서로 뒤섞이는 문제를 막는 법
· Elastic 공식 문서 Nested field type
Parent Circuit Breaker
fielddata·request 등 여러 개별 서킷 브레이커가 쓰는 메모리의 총합을 감시하는 최상위 브레이커. indices.breaker.total.use_real_memory 설정에 따라 기본 한도가 힙의 70%(추정치 합산) 또는 95%(실측)로 다르다.
Circuit Breaker — 메모리가 터지기 전에 요청을 먼저 거절한다
· Elastic 공식문서 Circuit breaker settings
percolate 쿼리
쿼리를 문서처럼 인덱스에 저장해두고, 새로 들어온 문서 하나를 그 저장된 쿼리들과 매칭시켜 '어떤 쿼리가 반응하는지'를 찾는 뒤집힌 검색 쿼리.
Percolator 쿼리 — '문서로 쿼리를 찾는' 대신 '쿼리로 문서를 찾는' 뒤집힌 검색
· Elastic 공식 문서 Percolate query
persistent vs transient(Cluster Settings)
Cluster Settings API로 설정을 적용하는 두 방식. persistent는 클러스터 재시작 후에도 유지되고, transient는 재시작 시 초기화된다. 공식 문서는 transient가 예측 불가능하게 사라질 수 있다는 이유로 더 이상 권장하지 않는다.
Cluster Settings — transient는 재시작하면 사라진다
· Elastic 공식문서 Update the cluster settings, Elastic Stack settings
Point in Time(PIT)
검색을 시작한 순간의 인덱스 데이터 상태를 고정해두는 가벼운 뷰. 명시적으로 열어야 하며, search_after와 함께 써서 인덱스가 계속 바뀌어도 일관된 페이지네이션 결과를 보장한다.
Point in Time(PIT) API — search_after만으로는 부족한 이유
· Elastic 공식 문서 Open a point in time
Profile API
검색 요청에 profile: true를 추가해 쿼리 실행의 상세 타이밍(Query/Collectors 분리, breakdown)을 확인하는 진단 도구.
Profile API — 쿼리가 실제로 어디서 시간을 쓰는지 들여다보기
· Elastic 공식 문서 Profile search requests
Rank Eval API
대표 검색 쿼리와 사람이 매긴 문서별 관련도 등급을 입력받아, 실제 쿼리 실행 결과의 관련도를 Precision/Recall/MRR/DCG 등 정량 지표로 채점하는 Elasticsearch API.
Rank Eval API — 검색 관련도를 '느낌'이 아니라 숫자로 평가하기
· Elastic 공식 문서 Rank evaluation API
refresh_interval
메모리 버퍼의 새 문서를 검색 가능한 Lucene 세그먼트로 구체화하는 주기. 기본 1초이며, 이 값이 Elasticsearch를 '준실시간'으로 만드는 핵심 메커니즘이다.
니어 리얼타임 검색 — refresh_interval과 색인 직후 안 보이는 이유
role_descriptors
API 키 생성 시 그 키에 부여할 권한(클러스터/인덱스 권한 등)을 명시하는 파라미터. 실제 적용 권한은 이것과 발급자의 발급 시점 권한 스냅샷이 함께 작용해 결정된다.
API 키 기반 접근 제어 — role_descriptors와 '생성 시점 권한 스냅샷'
· Elastic 공식 문서 Elasticsearch API keys 및 Create API key API
Rollover 조건
데이터 스트림·별칭이 새 백업 인덱스로 전환되는 트리거 조건. max_age/max_docs/max_size(및 max_primary_shard_size 등)를 지정하며, 여러 개를 지정하면 그중 하나만 만족해도 롤오버가 일어난다(OR 결합).
Rollover 조건 — max_age/max_docs/max_size 중 하나만 맞아도 넘어간다
· Elastic 공식문서 Rollover, Index rollover and routing allocation
runtime field
색인 시점에 저장되는 일반 필드와 달리, 쿼리가 매칭한 문서에 대해 매 쿼리마다 Painless 스크립트로 값을 즉석 계산하는 필드. 재색인 없이 새 필드를 추가할 수 있지만 쿼리 성능에 영향을 줄 수 있다.
Runtime Fields — 매핑을 미리 안 정해도 되는 쿼리 시점 계산 필드
· Elastic 공식 문서 Runtime fields
script_score 쿼리
내부 쿼리로 찾은 후보 문서들의 점수를 Painless 스크립트로 재계산해 완전히 대체하는 쿼리. 매칭 여부는 내부 쿼리가, 순위는 스크립트가 결정한다.
Painless script_score — 커스텀 스코어링과 성능 주의점
· Elastic 공식 문서 Script score query 및 Painless Score context
search_after
이전 페이지 마지막 문서의 정렬 값을 다음 요청에 커서처럼 넘겨, 이전 결과를 다시 로드하지 않고 페이지를 이어가는 방식. from/size의 index.max_result_window 제약과 깊은 페이지의 메모리 부담을 회피한다.
search_after — from/size가 무너지는 깊은 페이지네이션의 대안
· Elastic 공식 문서 Paginate search results
semantic_text
벡터 검색 설정(필드 타입·차원·유사도 함수·청킹 등)을 지정한 추론 엔드포인트 기반으로 자동 구성해주는 Elasticsearch 필드 타입. Ingest Pipeline이나 수동 매핑 없이도 의미 기반 검색을 쓸 수 있게 한다.
semantic_text — 벡터 검색 설정을 자동화한 필드 타입
· Elastic 공식문서 Semantic text field type
Shard Allocation Awareness
cluster.routing.allocation.awareness.attributes로 지정한 노드 속성(랙·존 등)을 이용해, 같은 샤드의 프라이머리와 레플리카가 같은 물리적 장애 단위에 몰리지 않도록 분산시키는 기능. 어디로 갈 수 있는지를 통제하는 Allocation Filtering과는 목적이 다르다.
Shard Allocation Awareness — '어디에 갈 수 있는가'가 아니라 '어떻게 흩어질 것인가'
· Elastic 공식문서 Shard allocation awareness
Shard Request Cache
샤드별로 검색 요청 본문을 해시해 결과(주로 hits.total·집계·suggestion)를 캐싱하는 기능. 그 샤드가 refresh되거나 매핑이 바뀌면 자동 무효화되며, size:0 요청 위주로 캐싱되고 개별 문서 히트는 기본적으로 캐싱되지 않는다.
Shard Request Cache — 검색 결과 자체를 캐싱한다
· Elastic 공식문서 The shard request cache
slices (Reindex API)
_reindex 요청을 여러 sliced scroll 조각으로 나눠 병렬 처리하게 하는 파라미터. 정수로 수동 지정하거나 auto로 Elasticsearch에 자동 결정을 맡길 수 있다.
Reindex Slicing — 큰 재색인을 여러 조각으로 쪼개 병렬화하기
· Elastic 공식문서 Reindex API — Slicing
Snapshot Lifecycle Management(SLM)
크론 기반 스케줄로 스냅샷 생성을 자동화하고, retention 정책(expire_after/min_count/max_count)으로 오래된 스냅샷을 자동 삭제하는 Elasticsearch 기능.
Snapshot Lifecycle Management(SLM) — 백업을 스케줄과 보존 정책으로 자동화
· Elastic 공식 문서 Create or update a policy(SLM)
Snapshot Repository
_snapshot API로 사전 등록하는, 스냅샷이 실제로 저장될 위치(S3/Azure/GCS/공유 파일시스템 등). elasticsearch-learn-10의 스냅샷과 elasticsearch-learn-26의 SLM은 이 저장소가 이미 등록돼 있다는 것을 전제로 동작한다.
Snapshot Repository — 스냅샷을 어디에 저장할지 먼저 등록한다
· Elastic 공식문서 Register a snapshot repository
synonym 필터
서로 다른 단어를 같은 의미로 취급하도록 analyzer 파이프라인에 넣는 토큰 필터. 동등 관계(쉼표 나열) 또는 명시적 매핑(=>) 두 형식으로 규칙을 정의한다.
동의어(Synonym) 필터 — 규칙 문법, 적용 시점, 그리고 synonym_graph가 필요한 이유
· Elastic 공식 문서 Synonym graph token filter
synonym_graph 필터
그래프 형태의 토큰 스트림을 생성해 다중 단어(복합어) 동의어를 정확히 매칭하는 검색 시점 전용 토큰 필터. 여러 개를 체이닝하면 예측 불가능한 동작을 유발할 수 있어 하나의 필터에 여러 동의어 세트를 함께 두는 것이 권장된다.
동의어(Synonym) 필터 — 규칙 문법, 적용 시점, 그리고 synonym_graph가 필요한 이유
· Elastic 공식 문서 Synonym graph token filter
term 쿼리
elasticsearch-learn-03의 analyzer 파이프라인을 거치지 않고, 입력값을 그대로 역인덱스에서 정확히 일치하는 term으로 찾는 쿼리. keyword·숫자처럼 분석 안 되는(또는 특정 방식으로만 분석되는) 필드의 정확값 검색에 쓰인다.
term vs match 쿼리 — '분석하지 않는다'는 게 핵심이다
· Elastic 공식문서 Term query
Unified Highlighter
Elasticsearch의 기본 하이라이터. 텍스트를 문장 단위로 나눠 BM25로 채점하고, 정확한 구문·multi-term 매칭을 지원하며, 색인된 term vector/offset을 재활용하거나 없으면 즉석 인메모리 인덱스로 처리한다.
Highlighting — 검색 결과에서 매칭된 부분을 표시하는 세 가지 방식
· Elastic 공식문서 Highlighting, How highlighters work internally
Watch(Watcher)
trigger→input→condition→action 4단계로 구성된 Elasticsearch의 자동화 알림 파이프라인. 스케줄에 따라 데이터를 조회하고, 조건을 평가해 만족하면 이메일·웹훅 같은 액션을 실행한다.
Watcher — 검색 결과를 조건에 따라 액션으로 연결한다
· Elastic 공식문서 How Watcher works
매핑 폭발 (Mapping Explosion)
다양한 필드명을 가진 문서를 동적 매핑으로 무분별하게 색인하다 필드 개수가 계속 늘어나 인덱스당 필드 수 상한(기본 1000)을 넘기는 문제.
매핑과 분석기 — 필드 타입, 토크나이저·필터 파이프라인
샤드 할당 필터링
index.routing.allocation.include/exclude/require 설정으로 특정 인덱스의 샤드가 어떤 노드 속성을 가진 노드에 배치될 수 있는지 통제하는 기능. 노드 유지보수, hot/warm 계층 라우팅 등에 쓰인다.
샤드 할당 필터링 — include/exclude/require로 샤드가 갈 노드를 통제하기
· Elastic 공식 문서 Index-level shard allocation settings
역인덱스 (Inverted Index)
일반적인 '문서→단어' 구조를 뒤집어 '단어→문서 목록'으로 미리 구축한 색인 구조. 전문 검색을 풀스캔 없이 빠르게 만든다.
역인덱스와 Lucene — BM25 스코어링과 세그먼트
인덱스 템플릿
이름 패턴이 일치하는 인덱스가 생성될 때 설정·매핑·별칭을 자동으로 적용하는 Elasticsearch 메커니즘. 컴포넌트 템플릿을 조합해 구성할 수 있다.
인덱스 템플릿과 컴포넌트 템플릿 — 매번 매핑을 반복 지정하지 않는 법
· Elastic 공식 문서 Index and component templates
클러스터 상태 (green/yellow/red)
샤드 할당 상태를 요약하는 클러스터 건강 지표. green=전부 정상, yellow=레플리카만 미할당, red=프라이머리 미할당(데이터 일부 불가용).
클러스터 상태와 스냅샷/복구 — 운영 관점
· Elastic 공식 문서 cluster-health, red-yellow-cluster-status, snapshot-restore