• Kibana--KQL查询语法的使用


    原文网址:Kibana--KQL查询语法的使用_IT利刃出鞘的博客-CSDN博客

    简介

    说明

            本文介绍Kinaba的KQL查询语法的使用。

    官网网址

    KQL语法:https://www.elastic.co/guide/en/kibana/7.7/kuery-query.html

    Lucene语法:https://www.elastic.co/guide/en/kibana/7.7/lucene-query.html

    Kibana的两种查询语法

    Kibana的7.x版本支持两种查询语法:

    1. KQL(Kibana Query Language)语法
    2. Lucene 语法

    默认是KQL,如果关闭KQL,则使用Lucene语法。

    Kibana查询界面的进入方式如下:

    KQL查询语法

    全文搜索

    说明

            直接输入查询内容即可。

    示例:查找包含hello,或者包含world,或者两者都包含。

    hello world

    限定字段

    语法

    字段名: 匹配值

    示例1:查询FlightNum字段匹配"4H2KUBH"字符串的文档。

    FlightNum: 4H2KUBH

    示例2:查询FlightNum字段存在(无论值是什么)的文档。 

    FlightNum: *

    范围查询

    说明

            可以指定日期、数字或者字符串字段的范围。关系运算符只能用在数值和时间类型的字段。

    支持关系运算符如下:

    • <= 小于等于
    • >= 大于等于
    • < 小于
    • > 大于

    示例:年龄大于等于30的

    age >= 30

    逻辑操作

    支持逻辑运算符如下:

    • and:与
    • or:或
    • not:非

    示例1:and 的用法

    查询name字段包含jane,且addr字段包含beijing的记录。

    name:jane and addr:beijing

    注意:查询结果不区分大小写

    示例2:or 的用法

    查询name字段包含jane,或者addr字段包含beijing的记录,或者两者都匹配。

    name:jane or addr:beijing

    示例3:not 的用法

    查询出response字段中不包含200的记录

    not response:200

    查询response包含200,并且整条记录不包含yes的数据记录 

    response:200 and not yes

    查询response包含200,且response不包含yes的记录

    response:(200 and not yes)

    示例4:多个运算符结合

    查询name包含jane且addr包含beijing的记录,或者job包含teacher的记录。

    name:jane and addr:beijing or job:teacher

    KQL中,and的优先级高于or。上方结果可以使用小括号来理解

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

    示例5:值里使用运算符

            查询response包含200,或者response包含404,或者包含200和404的记录。

    response:(200 or 404)

    或者

    response:200 or response:400

    注意:不保证顺序、不区分大小写。

    嵌套查询

    原始数据

    1. {
    2. "level1": [
    3. {
    4. "level2": [
    5. {
    6. "prop1": "foo",
    7. "prop2": "bar"
    8. },
    9. {
    10. "prop1": "baz",
    11. "prop2": "qux"
    12. }
    13. ]
    14. }
    15. ]
    16. }

    需求

    查找 level1.level2.prop1 是 foo 或者是 baz的

    写法

    level1.level2 { prop1: "foo" or prop1: "baz" }

     KQL查询通用规则

    如下几项规则适用于所有场景,包括:全文检索、限定字段、模糊字段等。

    引号

            直接输入内容则会将内容进行分词,然后查询;若不想分词,整词查询,则两边加引号即可。

    示例1:查找包含hello,或者包含world,或者两者都包含。

    hello world

    示例2:查找包含hello world的。

    "hello world"

    模糊查询

    说明

    ? 匹配单个字符

     * 匹配0到多个字符

    示例1:全文索引

    下边这个可匹配:kibana

    kiba?a

    下边这个可匹配:elasticsearch 

    el*search

    示例2:限定字段 

    下边这个可匹配title含有kibana的文档。

    title:kiba?a

    示例3:模糊字段 

    下边这个可匹配title含有kibana的文档。

    tit*:kibana

    容错查询

    说明

    ~: 在一个单词后面加上~启用模糊搜索,可以搜到一些拼写错误的单词。

    示例

    first~

    能匹配到 frist

  • 相关阅读:
    C++11的学习
    Spring Boot 内置工具类应有尽有 建议收藏
    Spring MVC中如何进行页面重定向呢?
    Springboot + Elasticjob-lite 3.x + Elasticjob-lite-UI可视化
    == 和 equals 的区别
    阅读笔记——C3AE: Exploring the Limits of Compact Model for Age Estimation
    ctrlz删除的文件怎么恢复?
    js如何区分数组和对象
    算法解析:LeetCode——机器人碰撞和最低票价
    矿山边坡安全监测及预警系统解决方案
  • 原文地址:https://blog.csdn.net/feiying0canglang/article/details/126133551