brunch

매거진 Elastic Stack

You can make anything
by writing

C.S.Lewis

by 장영석 Aug 20. 2018

Kibana - Discover

Kibana Query Language Enhancements

Kibana Query Language Enhancements


WARNING

이 기능은 실험적이고 이후 릴리즈에서 변경되거나 완전히 삭제될 수 있다.


NOTE

6.0에서 우리는 Kuery라는 실험적인 쿼리 언어를 소개했다. 우리는 이 실험으로부터 배운 것을 가져와 표준 Kibana 쿼리 언어에 적용했다. 결과적으로, Kuery는 더 이상 독립형 옵션이 아니게 되었다. Kuery를 사용해서 저장된 검색은 이 페이지에서 설명된 언어 향상 기능이 사용되도록 자동으로 선택된다. 하지만, 쿼리 구문에 몇 가지 큰 변화가 생겼으므로, 새로운 것에 대한 자세한 내용을 모두 읽어보아라. 


6.3 버전부터, 쿼리바에 옵션 메뉴에서 다양하고 흥미로운 실험적인 쿼리 언어 향상 기능을 선택할 수 있다.

현재는, 쉬운 구문 사용을 위해 자동완성 기능, 스크립트 필드 지원, 단순화 기능을 선택할 수 있다. 우리는 당신이 시험해 볼 수 있도록 더 많은 기능을 구축하기 위해 열심히 일하고 있다. 이러한 기능들을 여러 각도로 사용해보고 당신의 생각을 우리에게 알려줘라!


New simplified Sytax

Kibana의 예전 루씬 쿼리 구문에 친숙하다면, 새로운 구문도 익숙할 것이다. 기본적인 부분은 유지하고, 쿼리 언어를 사용하기 쉽도록 간단하게 수정하였다. 아래 변경사항들을 읽어보라.


response:200 은 response 필드 값이 200인 document와 일치한다.


검색어를 인용부호로 감싸면 구문 검색을 시작한다. 예를 들어, message:"Quick brown fox"는 message 필드에 "quick brown fox" 구문을 검색한다. 인용부호가 없다면, 쿼리는 message 필드의 설정된 분석기를 통해 토큰으로 세분화되고 보이는 순서와 관계없이 토큰이 포함되어있다면 document를 일치시킨다. 이 말은 "quick brown fox" 문서가 일치하지만, "quick fox brown"도 일치한다는 뜻이다. 구문을 검색하려면 인용부호를 사용해야 한다는 것을 기억해라.


쿼리 파서는 더 이상 공백으로 분류하지 않는다. 다중 검색어는 명시적으로 boolean 연산자로 구분되어져야 한다. boolean 연산자는 대소문자


루씬에서 response:200 extensions:phpresponse:200 and extensions:php가 된다. 이는 response가 200이고 extension이 php인 document와 일치한다.


or를 사용해서 용어를 선택적으로 만들 수 있다.


response:200 or extension:php는 response가 200, extension이 php 또는 둘 다인 document와 일치한다.


기본적으로, and가 or보다 우선순위가 높다.


response:200 and extension:php or extension:css는 response가 200이고 extension이 php document 또는 extension이 css이고 response는 어떤 것이든 상관없는 document와 일치한다.


우리는 그룹화를 사용해서 기본 우선순위를 재정의할 수 있다.


response:200 and (extension:php or extension:css)는 response가 200이고 extension이 php이거나 css인 document와 일치한다.


단일 필드에 여러 개의 값을 쉽게 검색하기 위한 간단한 방법도 있다.


response:(200 or 404)는 response 필드가 200이거나 404인 문서를 검색한다. 우리는 또한 검색어 리스트를 포함하는 여러 값을 가지고 있는 필드의 문서를 검색할 수 있다. 예제: tags:(success and info and security)


검색어는 not 접두사를 사용하여 반대로 동작하게 할 수 있다.


not response:200은 repsonse가 200이 아닌 모든 document와 일치한다.


그룹 전체를 뒤집을 수도 있다.


response:200 and not (extension:php or extension: css)


범위는 작은 구문적 차이를 제외하고는 lucene과 비슷하다.


bytes:>1000 대신에, 콜론을 생략해서 bytes > 1000.


>, >=, <, <=는 모두 사용 가능한 범위 연산자다.


Exist 쿼리는 간단하고 특별한 연산자가 필요 없다. response:*는 response필드가 존재하는 모든 문서를 찾는다.


와일드카드 쿼리도 사용 가능하다. machine.os:win*는 값이 "windows 7"과 "windows 10"같이 machine.os 필드가 "win"으로 시작하는 문서들과 일치한다.


와일드카드는 한 번에 여러 개의 필드 검색도 허용한다. text와 keyword 필드에 모두 버전이 있을 때 편리하게 사용할 수 있다. machine.os와 machine.os.keyword 필드가 있다고 가정하고 "windows 10" 검색어를 두 필드 모두 확인하려고 한다. 우리는 이와 같이 할 수 있다: "machine.os*:windows 10".


NOTE

필드 없는 검색어는 index 설정에 기본 필드를 대조하여 사용한다. 기본 필드가 설정되어 있지 않으면 이러한 검색어들은 모든 필드를 대조하여 일치하는 문서를 찾는다. 예를 들어, response:200의 쿼리는 response필드에 값이 200인 문서를 검색하지만, 단지 200의 쿼리는 인덱스의 모든 필드 값을 거쳐 200을 검색한다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari