Kibana Query Language (KQL)
Kibana Query Language (KQL)을 정리한다.
1. Kibana Query Language (KQL)
1.1 Terms Query
Field와 Value가 정확히 일치하는 Document만 출력하는 Query를 의미한다.
[Field]:[Value]: Field에 Value가 존재하는 Document만 얻는다.response:200:responseField에200Value가 존재하는 Document만 얻는다.message:ssup2:messageField에ssup2문자열 Value가 존재하는 Document만 얻는다.message:"ssup2 blog":messageField에ssup2 blog문자열 Value가 존재하는 Document만 얻는다.
1.2. Boolean Query
not, and, or 논리 연산자를 이용하는 Query를 의미한다. 괄호를 이용하여 연산자 비교 대상 제한 및 우선순위를 변경할 수 있다.
not [Field]:[Value]: Field에 Value가 존재하지 않는 Document만 얻는다.not response:200:responseField에200Value가 존재하지 않는 Document만 얻는다.
[Field1]:[Value1] and [Field2]:[Value2]: Field1에 Value1하고 Field2에 Value2가 존재하는 Document만 얻는다.response:200 and message:"ssup2":responseField에200Value가 존재하고messageField에ssup2문자열 Value가 존재하는 Document만 얻는다.
[Field]:([Value1] or [Value2]): Field에 Value1이 존재하거나 Value2가 존재하는 Document만 얻는다.response:(200 or 404):responseField에200Value가 존재학거나404Value가 존재하는 Document만 얻는다.
1.3. Range Query
>, >=, <, <= 비교 연산자를 이용하는 Query를 의미한다.
[Field]:[Value]>[Number]: Field에 Number보다 작은 Value가 존재하는 Document만 얻는다.
1.4. Wildcard Query
Wildcard(*)를 이용하는 Query를 의미한다.
[Field]:*: Field가 존재하는 Document만 얻는다.response:*:responseField가 존재하는 Document만 얻는다.
[Field]:[Value]*: Field에Value문자열로 시작하는 Value가 존재하는 Document만 얻는다.message:ssup*:messageField에ssup문자열로 시작하는 Value가 존재하는 Document만 얻는다.
[Field]*:[Value]:Field문자열로 시작하는 Field에 Value가 존재하는 Document만 얻는다.mess*:ssup2:mess문자열로 시작하는 Field에ssup2문자열 Value가 존재하는 Document만 얻는다.
1.5. Nested Field Query
Field 내부에 Field가 존재하는 Nested Field에 존재하는 쿼리를 의미한다.
[Field1]:{[Field2]:[Value]}: Field1 내부의 Field2에 Value가 존재하는 Document만 얻는다.request:{response:200}:requestField 내부의responseField에200Value가 존재하는 Document만 얻는다.
2. 참조
- KQL (Kibana Query Language) : https://www.elastic.co/guide/en/kibana/master/kuery-query.html
- Kibana queries and filters : https://www.elastic.co/guide/en/beats/packetbeat/current/kibana-queries-filters.html