← 학습 카테고리

Learn

Elasticsearch

50개 모듈 · 현재 17번째

Elasticsearch 모듈 17/50 elasticsearch-learn-17

ES|QL — 파이프로 데이터를 다루는 새로운 쿼리 언어

Elasticsearch ES|QL 및 API 키 기반 접근 제어 공식 문서 종합 (웹 리서치, 2026) — Elastic 공식 문서(explore-analyze/query-filter/languages/esql, deploy-manage/api-keys/elasticsearch-api-keys, security-api-create-api-key) Elastic 공식 문서 ES|QL

이 모듈을 다 읽으면

  • ES|QL의 파이프 문법이 어떤 방식으로 명령을 순차 연결하는지 설명할 수 있다
  • ES|QL이 Query DSL과 다른 지점(가독성, 탐색적 분석 용도)을 설명할 수 있다

elasticsearch-learn-05에서 다룬 JSON 기반 Query DSL과 대비되는, 유닉스 파이프처럼 명령을 순서대로 이어 붙여 데이터를 탐색·집계·변환하는 새로운 쿼리 언어 ES|QL의 기본 문법과 용도를 정리한다.

파이프 문법 — FROM으로 시작해 명령을 순서대로 이어붙인다

ES|QL 쿼리는 항상 데이터 소스를 지정하는 FROM 명령으로 시작하고, 그 뒤에 파이프(|) 기호로 처리 명령들을 순서대로 이어붙인다 — 예를 들어 FROM sample_data | SORT @timestamp DESC | LIMIT 3는 sample_data 인덱스에서 시작해 타임스탬프 내림차순 정렬 후 상위 3개만 남긴다. 각 단계의 출력이 곧바로 다음 단계의 입력이 되는 구조라, 복잡한 Query DSL의 중첩된 JSON 구조 대신 처리 순서를 코드 읽듯 순차적으로 따라갈 수 있다는 게 핵심 차이다.

핵심 포인트

  • ES|QL은 FROM(데이터 소스 지정)으로 시작해 파이프(|)로 처리 명령을 순서대로 이어붙이는 문법
  • 각 단계의 출력이 다음 단계의 입력이 되는 구조 — Query DSL의 중첩 JSON 대신 순차적으로 읽을 수 있음

주요 명령 — WHERE/STATS/SORT/LIMIT

WHERE는 조건에 맞는 행만 남기는 필터링, STATS는 집계 연산(그룹별 통계 등), SORT는 정렬, LIMIT은 결과 개수 제한을 담당한다 — 각각이 파이프라인의 한 단계로 순서대로 적용된다는 점에서, Query DSL에서 하나의 요청 안에 필터·집계·정렬을 모두 중첩된 절로 명시해야 했던 것과 대비된다. 공식 문서는 ES|QL이 초기에는 Query DSL이 지원하는 기능의 부분집합만 지원했다고 명시하는데, 이는 ES|QL이 Query DSL을 완전히 대체하는 게 아니라 특정 용도(탐색적 분석)에 특화된 보완적 언어로 자리잡고 있음을 시사한다.

핵심 포인트

  • WHERE(필터)/STATS(집계)/SORT(정렬)/LIMIT(개수 제한)이 각각 파이프라인의 한 단계로 순차 적용됨
  • ES|QL은 초기엔 Query DSL 기능의 부분집합만 지원 — Query DSL을 완전히 대체하는 게 아니라 특정 용도에 특화된 보완적 언어

용도 — 가독성 좋은 탐색적 분석

ES|QL은 읽고 쓰기 쉬운 문법을 목표로 설계돼, 기술 수준이 다양한 사용자도 접근할 수 있는 탐색적 데이터 분석·통계 분석·시계열 분석·복잡한 순차 변환에 강점이 있다. 반면 정교한 관련도 스코어링, 세밀한 쿼리 컨텍스트 제어(must/filter 구분) 등 Query DSL이 오래도록 다듬어온 검색 전용 기능은 여전히 Query DSL 쪽이 강점을 갖는 영역으로 남아있다 — 즉 용도에 따라 두 언어를 상호보완적으로 골라 쓰는 게 실무적 접근이다.

핵심 포인트

  • ES|QL은 가독성 좋은 문법으로 탐색적 분석·통계/시계열 분석·복잡한 순차 변환에 강점
  • 정교한 관련도 스코어링, 세밀한 쿼리 컨텍스트 제어는 여전히 Query DSL이 강점 — 용도에 따라 상호보완적으로 선택