KQL
KQL (Kibana Query Language)
Kibana 의 discover 에서 사용하는 Kibana 언어 입니다. Elasticsearch의 query_string에서는 사용할 수 없습니다.
Kibana와의 호환도가 높아 기존 Lucene에 비해 사용하기 편합니다.
사용방법
특정 필드 검색
Boolean 검색
범위 검색
와일드카드(*) 검색
특정 필드 검색
특정 필드에 하나 이상의 term(검색 용어)이 포함되어 있는지 검색한다.
company 필드에서 elastic을 검색하는 경우 아래와 같이 검색
company:elastic
정확히 일치한 문장을 검색할 경우 쌍따옴표(")로 묶어준다.
company:"elastic search exam"
문장에 쌍따옴표(")을 붙이지 않고 검색을 하면, 단어 순서와 상관없이 모두 검색된다.
company:elastic search exam
위의 결과의 경우 elastic exam search 도 검색된다.
특정 필드를 지정하지 않고 검색하면 모든 필드에 대해 검색을 실시한다.
elastic search exam
Boolean 검색
OR, AND, NOT 연산자를 기본으로 지원하며, AND가 OR 보다 높은 우선순위를 갖는다. 소괄호()로 묶어 우선순위를 지정할 수 있습니다. (대소문자를 구분하지 않습니다.)
직업이 개발자거나 또는 회사가 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 등의 여러 종류를 가지고 있을 때 유용하게 사용할 수 있습니다.