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

kibana的query string syntax 笔记的更多相关文章

  1. elasticsearch 基础 —— Query String

    使用查询解析器来解析其内容的查询.下面是一个例子: GET /_search { "query": { "query_string" : { "def ...

  2. nodejs笔记三--url处理、Query String;

    URL--该模块包含用以 URL 解析的实用函数. 使用 require('url') 来调用该模块. 一.parse函数的基础用法 parse函数的作用是解析url,返回一个json格式的数组,请看 ...

  3. <原>ASP.NET 学习笔记之HTML helper中参数何时会是路由参数,何时又会是query string?

    HTML helper中参数何时会是路由参数,何时又会是query string?   @Html.ActionLink("Edit", "Edit", new ...

  4. Elasticsearch由浅入深(七)搜索引擎:_search含义、_multi-index搜索模式、分页搜索以及深分页性能问题、query string search语法以及_all metadata原理

    _search含义 _search查询返回结果数据含义分析 GET _search { , "timed_out": false, "_shards": { , ...

  5. How to get the query string by javascript?

    http://techfunda.com/Tools/XmlToJson http://beautifytools.com/xml-to-json-converter.php https://www. ...

  6. query string parameters 、 Form Data 、 Request Payload

    微信小程序ajax向后台传递参数的时候总是报400错误 然后看了一下network 发现是query string parameters,但是我写的header如下 header:{ "Co ...

  7. springMVC接收参数的区别form data与query string parameters与request payload

    在AJAX请求中,我见过有三种form表单数据类型提交. 第一种:form data, 第二种:query string parameters,第三种:request payload. 在google ...

  8. http 请求参数之Query String Parameters、Form Data、Request Payload

    Query String Parameters 当发起一次GET请求时,参数会以url string的形式进行传递.即?后的字符串则为其请求参数,并以&作为分隔符. 如下http请求报文头: ...

  9. asp.net query string 及 form data 遇到的编码问题

    当遇到此问题时,脑海里闪过的第一个解决方案是设置 web.config 的编码.但一想,就某一个页面的需求而导致其他跟着妥协,不是好的解决方案.于是网上搜索答案,下面做个小分享,遗憾的是研究不够深入, ...

随机推荐

  1. flanneld 安装

    目录 flanneld 安装 下载分发flanneld二进制文件 分发二进制文件到所有集群的节点 创建Flannel证书和私钥 创建证书签名请求 生成证书和私钥 向etcd写入Pod网段信息 创建fl ...

  2. 分发系统介绍、expect脚本远程登录、expect脚本远程执行命令、expect脚本传递参数

    7月19日任务 20.27 分发系统介绍20.28 expect脚本远程登录20.29 expect脚本远程执行命令20.30 expect脚本传递参数 20.27 分发系统介绍 公司业务逐渐扩大时, ...

  3. block中self会造成循环引用问题

    将代码块中的 self换成unsafeSelf __unsafe_unretained 与 __weak 99%相同 __weak 当对象释放之后 会自动设置为nil 而__unsafe_unreta ...

  4. PAT甲级专题|链表

    PAT链表专题 关于PAT甲级的链表问题,主要内容 就是"建立链表" 所以第一步学会模拟链表,pat又不卡时间,这里用vector + 结构体,更简洁 模拟链表的普遍代码 cons ...

  5. 用launchscreen.storyboard适配启动图方法

    wwdc2019有session提出.到2020年4月,上架APP的启动图必须使用launchscreen.storyboard,不能再使用assert方式了.但是session没有给出如何适配.网上 ...

  6. SMProxy,让你的数据库操作快三倍!

    SMProxy GITHUB:https://github.com/louislivi/smproxy 喜欢请star 中文 | English /$$$$$$ /$$ /$$ /$$$$$$$ /$ ...

  7. MySQL数据库开发的36条原则【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  8. 华为云Volcano:让企业AI算力像火山一样爆发

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  9. js练习-两个栈实现队列

    目录 题 解 题 现在有个Q队列和栈A,栈B,栈只有两个方法,push()和pop(), 队列也只有两个方法,push()和pull(),队列的进和出都只能通过A和B的push和pop实现. // 大 ...

  10. 使用 Zookeeper 的 Api 实现服务订阅

    服务提供者 服务提供者中拷贝 Constants 服务提供者中拷贝 UserService 连接 Zk 集群 /*** * 连接ZooKeeper集群 */ public ZooKeeper conn ...