zoukankan      html  css  js  c++  java
  • kibana的query string syntax 笔记


    kibana的query string syntax 并不是 Query String Query,只能说类似。kibana的 Lucene query string syntax(es的query string syntax可以认为等同于Lucene的)类似于下面的语法
    {
          "query_string":{
                "default_field":"name",
                "query":"(this AND that) OR thu*"
           }
    }

    但是,很明显, 不能支持这么丰富的操作,没这么强大。 因为kibana中的搜索,只能是单行, 只能把query_string 在一行内写完,也就是合并了query_string内的field,query。
    所以其语法还是非常类似的。

    当然,要完全理解query_string,还是有些麻烦的。



    AND OR 需要是大写,小写and or 是不行的! 否定是NOT,不是感叹号(!)。过滤条件格式是:field:pattern,pattern遵循Lucene的query-string-syntax如果没有空格,不需要引号,否则需要引号。pattern支持正则表达式;同时也支持 /ob[am]{2}a/ 这样的正则表达式格式。—— 两种正则表达式的区别呢?/reg/表达式,会去尝试匹配一个单词,从单词的头到尾。不允许多余的空格。两种可以并行存在,如 msg:(/c+.*RE+.*g/  OR SELE*T)


    /reg/是标准的正则表达式语法,其中的.表示任意字符,*表示数量一个或多个;而 msg:SELE*T 这种格式的正则表达式的* 同时表示了 字符和数量,相当于 .*



    field 可以有多个,field之间使用AND或OR,也可以使用空格,空格表示的是使用default_operator(默认default_operator是OR);pattern也可以是一个复合的pattern(复合pattern用小括号包围起来,然后使用AND OR或空格等关键字)


    可以没有field,那么会查询 default_field ,
    引号的含义是把引号内部的所有内容当作一个单词!如 msg:"Switching  JDBC Connection",引号内部的空格是随意的(除了不能有换行符)内部的几个单词是有顺序的(就是说不同顺序就会不同结果), 引号内部是不支持正则表达式的,如 msg:"Switching  JDBC Connectio*" 是查询不到任何内容的。(也就是说,不会对引号内的内容进行任何解析,如同linux命令的echo 的双引号参数)(why?此时,pattern的必须单词,因为Lucene的最小单位是单词,即最小向量是单词?)如msg:"JDBC "是ok的,但 msg:"JDB" 是查询不到任何内容的,因为引号内部的JDB不是一个完整的 已经被es索引好了的 向量。(我们的日志也没有产生JDB这样的单词)

    msg:JDB 也是无果,但是msg:JDB* 就是ok的!pattern没有引号包围,那么可以使用正则表达式,但是一般最好不要在前面使用,cuz:
    Warning
    Allowing a wildcard at the beginning of a word (eg "*ing") is particularly heavy, because all terms in the index need to be examined, just in case they match. Leading wildcards can be disabled by setting allow_leading_wildcard to false.

    另外最好不要直接一个纯*作为pattern,cuz:
    Warning
    Pure wildcards * are rewritten to exists queries for efficiency.As a consequence, ...


    示例:
    app_name:project_app  AND level:ERROR AND full_message:"Unknown column "

    level:ERROR 可以写成 level:ERROr, level:erRor, 但是 level:ERRO 就不行。当然这也得看level是什么数据类型,是否允许变形。这些都是可以在es中设置的。

    参考:
    https://www.elastic.co/guide/en/elasticsearch/reference/6.0/query-dsl-query-string-query.html#query-string-syntax
    https://www.imooc.com/article/38062

  • 相关阅读:
    StratifiedKFold实现分层抽样
    Windows 平台下 pip 下载whl第三方库
    Adversarial Training Methods For Semi-Supervised Text Classification 虚拟对抗训练思路指引
    MNIST 数据加载
    delphi:raise 语句: 抛出异常 (转载)
    delphi:创建对象时,Application、Self、nil三者的区别(转载)
    delphi:nil、null、UnAssigned区别(转载)
    delphi:TMS安装(转载)
    delphi: MSComm的属性
    delphi:第三方控件的安装与删除(转载)
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/10929927.html
Copyright © 2011-2022 走看看