[Elasticsearch] Kibana Query Language 사용법 정리

ㅁ 들어가며
ㅇ Kibana Query Language(KQL)는 Elasticsearch 데이터를 효과적으로 검색하고 필터링하기 위한 강력한 쿼리 언어다. 이 글에서는 KQL의 주요 기능과 사용법을 정리하였다.
ㅁ 관련 글
ㅇ [kotlin] Spring Data Elasticsearch 샘플코드
ㅇ [Elasticsearch] Elasticsearch + Kibana 설치하기 with Docker
ㅇ [Elasticsearch] Docker로 Elasticsearch 설치 및 테스트하기
ㅇ [Elasticsearch] Kibana Query Language 사용법 정리
ㅁ 기본 구문
field:value
ㅇ 예를 들어 username:john은 username이 john인 데이터를 조회한다.
ㅁ 와일드카드 검색
*: 0개 이상의 문자
?: 정확히 1개의 문자
ㅇ 와일드카드를 사용하여 부분 일치 검색을 할 수 있다.
ㅇ 예: username:j* (j로 시작하는 모든 사용자명)
datastream.*: logs (datastream에 종속된 요소들 중 logs가 포함)
ㅁ 범위 쿼리
field > value
field >= value
field < value
field <= value
ㅇ 예: age > 30 and age < 40
ㅁ 존재 여부 확인
_exists_:field
ㅇ 필드의 존재 여부를 확인할 수 있다.
ㅇ 예: _exists_:email
ㅁ 부정 연산자
not status:active
-status:active
ㅇ not 키워드나 - 기호를 사용하여 조건을 부정할 수 있다.
ㅁ 그룹화
ㅇ 괄호 () 를 사용하여 조건을 그룹화할 수 있다.
ㅇ 예: (status:active or status:pending) and country:US
ㅁ 논리 연산자
and, or, not을 사용하여 여러 조건을 결합할 수 있다.
ㅇ 예: status:active and (username:john or username:jane)
ㅁ 중첩 필드 쿼리
ㅇ 중첩 필드는 점(.) 표기법을 사용하여 접근할 수 있다.
ㅇ 예: user.name:john
ㅁ 쿼터 사용
ㅇ 공백이 포함된 값은 쿼터로 묶어야 한다.
ㅇ 예: message:"Hello world"
ㅁ 정규 표현식
ㅇ 정규 표현식을 사용하여 복잡한 패턴 매칭을 할 수 있다.
ㅇ 예: username:/joh?n(ath[ae]n)?/
ㅁ 날짜 쿼리
ㅇ 날짜 필드에 대해 특별한 구문을 사용할 수 있다.
ㅇ 예: @timestamp < "2021-01-01"
@timestamp: [now-1d TO now]
ㅁ 스크립트 쿼리
ㅇ 스크립트를 사용하여 더 복잡한 조건을 표현할 수 있다.
ㅇ 예: script{"source": "doc['price'].value < params.threshold", "lang": "painless", "params": {"threshold": 100}}