관리 메뉴

피터의 개발이야기

[Elasticsearch] KQL과 Lucene, 무엇이 다를까? Kibana 쿼리 언어 비교 가이드 본문

DevOps/Elasticsearch

[Elasticsearch] KQL과 Lucene, 무엇이 다를까? Kibana 쿼리 언어 비교 가이드

기록하는 백앤드개발자 2025. 9. 18. 23:35
반응형

ㅁ 들어가며

  Kibana를 쓰다 보면 검색창 우측의 KQL(Kibana Query Language)Lucene 중 무엇을 써야 할지 헷갈리기 쉽다.

 이번 글에서는 KQL과 Lucene의 개념 차이, 문법 비교, 그리고 실행 흐름을 정리해 보았다.

 

 

ㅁ KQL vs Lucene 개념

Lucene Query

  • Elasticsearch가 기본 제공하는 검색 언어
  • 문자열 중심, 오래된 표준이자 범용성 높음

Kibana Query Language (KQL)

  • Kibana가 Lucene을 더 쉽게 쓰도록 만든 상위 문법
  • 필드 타입 인식, 자동 완성, 오타 검증 등 UI 친화적 기능 제공

 

ㅁ 문법 비교

목적 Lucene KQL
필드 일치 status:200 status : 200
NOT -status:200
!status : 200 or not status : 200
AND/OR status:200 AND method:GET
status : 200 and method : "GET"
존재 검사 _exists_:user user : *
범위 bytes:[100 TO 200]
bytes >= 100 and bytes <= 200

 

💡 포인트: KQL은 and, or, not을 그대로 쓰며 타입별 연산이 더 직관적이다.

 

 

ㅁ 실행 흐름

KQL을 선택해도 실제 Elasticsearch로 요청이 나갈 때는 Lucene 쿼리 DSL로 변환된다.

KQL 입력 → Kibana KQL 파서 → Lucene Query DSL 변환 → Elasticsearch 실행

즉, Kibana는 프런트엔드 편의 문법을 제공하고, ES는 결국 Lucene 기반 쿼리를 처리한다.

성능·결과는 Lucene 직접 사용과 동일하다.

 

 

ㅁ 언제 어떤 언어를 쓸까?

KQL 추천: Kibana 대시보드·Discover에서 빠른 검색, 필드 자동 완성이 필요할 때.

Lucene 추천: 정규식·퍼지 검색 등 Lucene 고유 기능이 필요하거나, Kibana 밖(REST API, Logstash 등)에서 동일 문법을 써야 할

때 필요하다.

 

 

ㅁ 마무리

  • KQL은 사용자 친화적 문법, Kibana UI 최적화.
  • Lucene은 ES 기본 엔진이자 범용 표준.
  • Kibana 사용 시 KQL로 편리하게 작성하되, 내부적으로는 Lucene DSL로 변환된다는 점을 기억하면 된다.
반응형
Comments