Kibana查询语言(KQL)AND、OR匹配,模糊匹配

简介: Kibana查询语言(KQL)AND、OR匹配,模糊匹配

一. 前言


现在大多数的公司都会使用ELK组合来对日志数据的收集、存储和提供查询服务。ElasticSearch + Logstash+ Kibana


查询数据库,如果是MySQL,那么就需要使用MySQL的语法;同样的,在Kibana上查询数据,也需要使用Kibana的语法,而Kibana的查询语法叫做Kibana Query Language,简称KQL


二. KQL简单介绍


KQL(Kibana Query Language),也就是在Kibana上面进行查询时使用的语法。


Kibana中也可以使用Lucene的查询语法,但是这里就不介绍了,可以参考https://www.elastic.co/guide/en/kibana/7.7/lucene-query.html


三. 使用索引匹配查询


Kibana中进行查询的时候,建议使用指定索引查询,这样的效率更高,而不建议使用全局查找的方式。


比如查找response200的日志,那么就写为response:200,这样去查找中response值包含200这个词的文档对象;


如果没有指定response200,那么只是单纯的查找200,那么可能会返回金额为200的文档对象(假设有金额字段),查询的效率不高,同时也会返回一些不需要的数据;


四. Kibana查询语法


实例1


response:200


上面这个表达式,会查询出response字段中包含200的文档对象,注意是包含,包含的是200这一个词,比如下面几种情况都会被查询出来

200
hello world 200
hello 200 world


需要注意的是1200或者2001,是不能被查出来的。


如果要查询1200或者2001,这种模糊匹配的,可以使用通配符,比如 response:*200 或者 response:200*


实例2


message:"hello world yes"

上面这个表达式,是针对message字段进行搜索,在搜索的时候不会区分大小写,也就是说,Hello world YES也是会被搜索出来的;


需要注意,上面的"hello world yes"使用了引号,这样的话,这3个单词会被作为一个词进行查询,不会再进行分词,也就是说匹配的时候只会匹配hello world yes这样的顺序匹配,而不会匹配出helllo yes world


实例3


message:hello world

上面这个表达式,针对message字段进行搜索,搜索message中包含hello,或者包含world,或者两者都包含的情况;


需要注意的是,不区分大小写,也不会保证顺序,也就是说,下面几种情况都会被匹配

hello
world
Hello
World
hello world
Hello world
hello yes World
yes world
world yes


实例4


name:jane or addr:beijing

上面这个查询条件,会查询name字段包含jane,或者addr字段包含beijing的记录,或者两者都匹配;


需要注意的是,or表示 “或” ,不区分大小写;


实例5


name:jane and addr:beijing

上面这个条件,会查询name字段包含jane,且addr字段包含beijing的记录。


实例6


name:jane and addr:beijing or job:teacher

上面这个查询条件中,出现了andor,需要记住的是,KQL中,and的优先级高于or


所以上面的查询条件,会查询name包含jane,且addr包含beijing的记录,或者job包含teacher的记录,可以使用括号来让上面的查询条件更好理解:

(name:jane and addr:beijing) or job:teacher


实例7


name:jane and (addr:beijing or job:teacher)

上面这个表达式,主要是想表明,可以使用括号来控制匹配的优先级。


实例8


response:(200 or 404)

上面这个表达式,会查询response包含200,或者response包含404,或者包含200404的记录(不保证顺序、不区分大小写);


同时可以使用and来表示 “” 的关系。


实例9


not response:200

上面这个查询条件,会查询出response字段中不包含200的记录。


实例10


response:200 and not yes

上面这个查询条件,会查询response包含200,并且整条记录不包含yes的数据记录;


实例11


response:(200 and not yes)
1

上面这个查询条件,会查询response包含200,且response不包含yes的记录。


实例12


response:*

上面这个查询条件,会返回所有包含response字段的文档对象。


实例13


machine*:hello

上面这个查询条件,会查询machine1字段,machine2字段...machinexyzabc字段包含hello的数据记录,这里只是想表达,对于搜索的字段列,也是可以使用通配符的。


五.总结


KQL还是比较简单地,主要记住KQL匹配时是不区分大小写的,可以使用括号改变匹配优先级;


另外一个要点就是,匹配是 包含,某个字段“包含”某个词,而不是某个字段的值为某个词。


相关文章
|
传感器 监控 Java
如何正确理解 CPU 使用率和平均负载的关系?看完你就知道了
CPU(Central Processing Unit)是计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元,相当于系统的“大脑”。
4611 0
如何正确理解 CPU 使用率和平均负载的关系?看完你就知道了
|
Java 调度 Maven
【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目(下)
【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目(下)
2040 0
|
监控 Java 测试技术
实战:Springboot集成Sentinel实现流量控制、熔断降级、负载保护
实战:Springboot集成Sentinel实现流量控制、熔断降级、负载保护
|
10月前
|
消息中间件 数据可视化 Kafka
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
928 10
|
5月前
|
canal 关系型数据库 MySQL
数据同步神器-Canal
Canal是阿里巴巴开源的MySQL增量日志解析工具,通过模拟MySQL主从复制机制,实时捕获数据库变更,实现数据同步至Kafka、Elasticsearch等系统,广泛应用于数据同步、监控、备份与迁移场景。
3242 5
|
8月前
|
SQL XML Java
MyBatis Mapper中使用limit参数的查询问题
总结而言,MyBatis中使用 `limit`参数的查询可以高度定制并且灵活,基于方法签名和XML映射文件的组合来达成多样化的查询需求。通过参数化查询和动态SQL,MyBatis可以有效地处理各种复杂情境下的数据库操作,并且将SQL语句的维护与业务代码的编写相分离,提升代码的可维护性和可阅读性。
689 13
|
Java 微服务 Spring
手把手教你实现@RefreshScope注解
【10月更文挑战第16天】 在Spring Cloud中,@RefreshScope注解被广泛用于动态刷新配置。当我们修改了配置文件中的值,并且希望这些更改在不重启应用的情况下立即生效时,这个注解就显得尤为重要。本文将带你一步步实现一个简单的@RefreshScope功能。
1002 5
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
33548 0
|
Java Spring 容器
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
3161 3
|
Java Apache Spring
Java发送Http请求(HttpClient)
Java发送Http请求(HttpClient)
13284 2

热门文章

最新文章