Kibana搜索数据利器:KQL与Lucene

文章目录

  • 一、搜索数据
  • 二、KQL查询
    • 1、字段搜索
    • 2、逻辑运算符
    • 3、通配符
    • 4、存在性检查
    • 5、括号
  • 三、Lucene查询
    • 1、字段搜索
    • 2、逻辑运算符
    • 3、通配符
    • 4、范围搜索
    • 5、存在性检查
    • 6、括号
  • 四、总结

一、搜索数据

默认情况下,您可以使用 Kibana 的标准查询语言,该语言具有自动完成功能和简单易用的语法。Kibana 的旧查询 语言(基于 Lucene 查询语法) 目前在查询栏中的选项菜单下仍然可用。当这个 选择传统查询语言,也可以使用完整的基于 JSON 的 Elasticsearch 查询 DSL。

提交搜索请求时,直方图、文档表和字段 列表将更新以反映搜索结果。默认情况下,匹配以反向列出 按时间顺序排列,最先显示最新文档。您可以反转 通过单击“时间”列标题来排序顺序。

二、KQL查询

Kibana Query Language(KQL)是一种用于在Kibana中进行搜索和过滤数据的查询语法

1、字段搜索

使用field:value的格式来搜索特定字段中的值。

例如,level:DEBUG,将返回level包含DEBUG的文档。
Kibana搜索数据利器:KQL与Lucene_第1张图片

2、逻辑运算符

逻辑运算符:KQL支持逻辑运算符AND、OR和NOT来组合多个条件。

例如,level:DEBUG or level:Info,将返回level包含DEBUG或info的文档,不区分大小写。
Kibana搜索数据利器:KQL与Lucene_第2张图片

3、通配符

通配符:使用*作为通配符来匹配任意字符。

例如,tid:*6199,将返回以"6199"结尾的tid的文档。
Kibana搜索数据利器:KQL与Lucene_第3张图片

4、存在性检查

存在性检查:使用field:*来检查字段是否存在。

例如,@timestamp:*将返回具有`@timestamp字段的文档。
Kibana搜索数据利器:KQL与Lucene_第4张图片

5、括号

括号:使用括号来分组条件。

例如,@timestamp:"2023-12-14T06:55:32.548Z" and (level:info or level:DEBUG)将返回指定时间的level是info 或DEBUG的文档。
Kibana搜索数据利器:KQL与Lucene_第5张图片

三、Lucene查询

Kibana的旧查询语言基于 Lucene 查询语法。目前,此语法 在查询栏和高级设置中的选项菜单下仍然可用。

1、字段搜索

字段搜索:使用field:value的格式来搜索特定字段中的值。

例如,level:DEBUG,将返回level包含DEBUG的文档。
Kibana搜索数据利器:KQL与Lucene_第6张图片

2、逻辑运算符

逻辑运算符:Lucene支持逻辑运算符AND、OR和NOT来组合多个条件。

例如,level:DEBUG or level:Info,将返回level包含DEBUG或info的文档,不区分大小写。
Kibana搜索数据利器:KQL与Lucene_第7张图片

3、通配符

通配符:使用*作为通配符来匹配任意字符。

例如,tid:*0001,将返回以"0001"结尾的tid的文档。
Kibana搜索数据利器:KQL与Lucene_第8张图片

4、范围搜索

范围搜索:使用field:[start TO end]的格式来搜索字段中的范围。

例如,log.offset:[82194291 TO 82194500]将返回log.offset在82194291到82194500之间的文档。
Kibana搜索数据利器:KQL与Lucene_第9张图片

5、存在性检查

存在性检查:使用field:*来检查字段是否存在。

例如,@timestamp:*将返回具有`@timestamp字段的文档。Kibana搜索数据利器:KQL与Lucene_第10张图片

6、括号

括号:使用括号来分组条件。

例如,@timestamp:"2023-12-14T07:06:40.472Z" AND (level:info OR level:DEBUG)将返回指定时间的level是info 或DEBUG的文档。
Kibana搜索数据利器:KQL与Lucene_第11张图片
和KQL语法有区别,条件AND、OR需要大写

四、总结

KQL(Kibana Query Language)和Lucene查询语法在一些方面有一些区别:

语法结构:KQL使用更简洁和易于理解的语法结构,更接近自然语言,使得查询更易于编写和阅读。而Lucene查询语法则更为底层和灵活,需要更多的语法知识和操作。

功能支持:KQL在Kibana中内置了一些特定的功能,如直接在编辑器窗口中生成和编辑代码、支持自动调试和代码库全局理解等。而Lucene查询语法则更通用,可以更灵活地构建复杂的查询。

可扩展性:Lucene查询语法在Elasticsearch中更为底层,可以支持更多高级的查询操作和功能。而KQL是Kibana特定的查询语言,功能相对较为有限。

学习曲线:由于KQL的语法更简洁和易于理解,学习和使用起来相对较为容易。而Lucene查询语法需要更多的语法知识和经验,学习曲线相对较陡。

总的来说,KQL更适合在Kibana中进行简单和常见的搜索和过滤操作,而Lucene查询语法则更适合在Elasticsearch中进行更复杂和高级的查询操作。

详细可以参考官方文档

你可能感兴趣的:(搜索引擎,全文检索,搜索引擎,lucene)