Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kibana查询语言(KQL)AND、OR匹配,模糊匹配

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

作者头像
鱼找水需要时间
发布于 2023-02-16 08:35:27
发布于 2023-02-16 08:35:27
12.5K01
代码可运行
举报
文章被收录于专栏:SpringBoot教程SpringBoot教程
运行总次数:1
代码可运行

一. 前言

现在大多数的公司都会使用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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
response:200

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
200
hello world 200
hello 200 world

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

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

实例2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
message:"hello world yes"

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

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

实例3

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
message:hello world

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hello
world
Hello
World
hello world
Hello world
hello yes World
yes world
world yes

实例4

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name:jane or addr:beijing

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

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

实例5

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name:jane and addr:beijing

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

实例6

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name:jane and addr:beijing or job:teacher

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(name:jane and addr:beijing) or job:teacher

实例7

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name:jane and (addr:beijing or job:teacher)

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

实例8

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
response:(200 or 404)

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

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

实例9

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
not response:200

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

实例10

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
response:200 and not yes

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

实例11

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
response:(200 and not yes)

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

实例12

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
response:*

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

实例13

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
machine*:hello

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

五.总结

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

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

原文链接:https://www.cnblogs.com/-beyond/p/14159002.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Loki 查询语言 LogQL 使用
前面我们在学习到使用 Loki 的 Ruler 进行报警的时候,使用了一种查询语言来定义报警规则,这个就是受 PromQL 的启发,Loki 自己推出的查询语言,称为 LogQL,它就像一个分布式的 grep,可以聚合查看日志。和 PromQL 一样,LogQL 也是使用标签和运算符进行过滤的,主要有两种类型的查询功能:
我是阳明
2021/06/25
8.1K0
Loki 查询语言 LogQL 使用
Kibana(一张图片胜过千万行日志)
Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。
java架构师
2019/01/03
2.5K0
nginx 进行正则匹配(常见正则匹配符号表示)
今天遇到网站之前的url被百度搜索引擎抓取,需要在服务中进行301强制跳转,(如访问:www.baidu.com/kenni-1,www.baidu.com/kenni-1/,两个统一跳转到www.b
botkenni
2019/09/09
36K0
Kibana: 如何使用 Search Bar
我们知道 Kibana 作为 Elasticsearch 的数据呈现及分析,在 Kibana 中,search 几乎遍布所有的页面。搜索对于 Elastic 至关重要。了解如何在 Kibana 中进行搜索时非常重要的。它不仅仅限于我们对于输入字的搜索,或者对于一些词的过滤。它还包括:
腾讯云大数据
2020/07/17
3.4K0
Kibana: 如何使用 Search Bar
mysql正则表达式,实现多个字段匹配多个like模糊查询
一个questions表,字段有题目(TestSubject),选项(AnswerA,AnswerB,AnswerC,AnswerD,AnswerE) 要求字段不包含png,jpg,jpeg,gif 
陈灬大灬海
2018/12/28
12.9K0
Kibana使用:Search Bar
Index pattern:它指向一个或多个 Elasticsearch 的索引,并告诉 Kibana 想对哪些索引进行操作。
HLee
2021/01/21
1.4K0
Kibana使用:Search Bar
初识ELK(ElasticSearch-LogStash-Kibana)
title:”hello world” AND text:to 和 title:”hello world” AND to 等效
爬蜥
2019/07/09
5060
后端程序员不得不会的 Nginx 转发匹配规则
而且两者有细微差别,使用alias指令必须用 last标记;使用proxy_pass指令时,需要使用break标记。Last标记在本条rewrite规则执行完毕后,会对其所在server{......}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配。
程序员小富
2020/03/23
2.9K0
MongoDB模糊查询($regex查询、正则表达式匹配查询)
这里的 i 就是指最上面语法中的那个 options 的值 i 是其的一个选项,代表忽略大小写的意思。 这里 options 还有以下几个选项供使用:
全栈程序员站长
2022/08/23
14.5K0
MyBatis处理模糊查询
模糊查询是一种搜索数据的方式,它允许您在不完全匹配数据的情况下找到相应的结果。模糊查询通常用于在大型数据集中查找数据,并且通常比精确匹配更具实用性。例如,在一个包含大量文章的数据库中,可以使用模糊查询查找所有包含特定关键字的文章。
堕落飞鸟
2023/05/15
2K0
MySQL模糊查询用法大全(正则、通配符、内置函数等)
这是一条我们在MySQL中常用到的模糊查询方法,通过通配符%来进行匹配,其实,这只是冰山一角,在MySQL中,支持模糊匹配的方法有很多,且各有各的优点。好了,今天让我带大家一起掀起MySQL的小裙子,看一看模糊查询下面还藏着多少鲜为人知的好东西。
陈哈哈
2020/07/03
13.2K0
PostgreSQL - 模糊查询
like、not like在SQL中用于模糊查询,%表示任意个字符,_表示单个任意字符,如果需要在模糊查询中查询这两个通配符,需要用ESCAPE进行转义,如下:
雨临Lewis
2022/01/11
4.8K0
你还在用命令看日志?用这款可视化工具简直太方便了!
Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。
mySoul
2021/02/10
9.1K0
php模糊查询的实现方法
1.使用sql匹配模式,不能使用操作符=或!=,而是使用操作符LIKE或NOT LIKE;
李洋博客
2021/06/15
2.8K0
一文带你彻底搞懂Elasticsearch中的模糊查询
Elasticsearch(以下简称ES)中的模糊查询官方是建议慎用的,因为的它的性能不是特别好。不过这个性能不好是相对ES自身的其它查询(term,match)而言的,如果跟其它的搜索工具相比ES的模糊查询性能还是不错的。
用户7634691
2021/03/04
41K0
Nginx基础——Rewrite规则
rewrite是nginx一个特别重要的指令,该指令可以使用正则表达式改写URI。可以指定一个或多个rewrite指令,按顺序匹配。
芋道源码
2018/08/17
1.1K0
elasticsearch之多条件查询
总体来说,KQL的语法相对简单,但可以通过组合运算符、通配符、括号和常量等元素来构建复杂的查询。
九转成圣
2024/04/10
4370
nginx配置自定义变量实现日志动态分发
Nginx是一个异步框架的 Web服务器,也可以用作反向代理,负载平衡器 和 HTTP缓存。下载地址:www.nginx.org。
神秘的寇先森
2018/12/07
5.2K0
TP5 where数组查询(模糊查询--多个查询条件)
上表中的 exp 不是一个运算符,而是一个综合表达式以支持更复杂的条件设置。exp 的操作条件不会被当成字符串,可以使用任何 SQL 支持的语法,包括使用函数和字段名称。
php007
2019/10/29
6.7K0
TP5 where数组查询(模糊查询--多个查询条件)
Elasticsearch基础(五):使用Kibana Discover探索数据
登录Kibana。在Kibana主页的通过添加集成开始使用区域,单击试用样例数据。
Lansonli
2025/05/24
5640
Elasticsearch基础(五):使用Kibana Discover探索数据
相关推荐
Loki 查询语言 LogQL 使用
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验