KQL

KQL (Kibana Query Language)

Kibana 의 discover 에서 사용하는 Kibana 언어 입니다.  Elasticsearch의 query_string에서는 사용할 수 없습니다.

Kibana와의 호환도가 높아 기존 Lucene에 비해 사용하기 편합니다.

사용방법

특정 필드 검색

특정 필드에 하나 이상의 term(검색 용어)이 포함되어 있는지 검색한다.

company 필드에서 elastic을 검색하는 경우 아래와 같이 검색

company:elastic

정확히 일치한 문장을 검색할 경우 쌍따옴표(")로 묶어준다.

company:"elastic search exam"


문장에 쌍따옴표(")을 붙이지 않고 검색을 하면, 단어 순서와 상관없이 모두 검색된다.

company:elastic search exam

위의 결과의 경우 elastic exam search 도 검색된다.


특정 필드를 지정하지 않고 검색하면 모든 필드에 대해 검색을 실시한다.

elastic search exam

Boolean 검색

OR, AND, NOT 연산자를 기본으로 지원하며, ANDOR 보다 높은 우선순위를 갖는다. 소괄호()로 묶어 우선순위를 지정할 수 있습니다. (대소문자를 구분하지 않습니다.)

직업이 개발자거나 또는 회사가 elastic인 문서 검색:

job:developer OR company:elastic

직업이 개발자이면서 회사가 elastic 인 문서 검색:

job:developer AND company:elastic

회사가 elastic 또는 kafka 인 문서 검색:

company:(naver OR kafka)

직업이 개발자이면서 회사가 elastic 또는 kafka인 문서 검색:

job:developer AND company:elastic OR company:kafka

직업이 개발자가 아닌 문서 검색:

NOT job:developer

직업이 개발자인데 회사가 elastic 또는 kafka가 아닌 문서 검색:

job:developer AND NOT (company:elastic  OR company:kafka)

범위 검색 (Range Query)

>, >=, <, <= 를 사용 할 수 있습니다.


연봉 6000 이상 8000 미만인 데이터 검색:

salary >= 6000 AND salary < 8000

존재 여부 검색 (Exist query)

특정 필드의 값이 존재하는 문서를 검색한다.

이메일 정보가 있는 필드 검색:

e_mail:*

와일드카드 검색

company.name 이 elastic search, elastic kibana와 같이 elasitc로 시작하는 문서들 검색:

company.name:elasic*

여러 필드 매칭 검색

company.location*:Seoul-Si

company.location, company.location.keyword 와 같이 특정 필드가 text 와 keyword 등의 여러 종류를 가지고 있을 때 유용하게 사용할 수 있습니다.

LinkedIn

ⓒ younabiya