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. TableViewCell的封装(显示不同内容)

    http://blog.csdn.net/qq_24513939/article/details/45968123

  2. IDEA启动tomcat报java.net.SocketExceptionsocket closed

    IDEA启动tomcat报java.net.SocketException:socket closed.如图所示   解决方法:打开任务管理器,检查有没有java.exe进程. 关闭了重新启动就好了 ...

  3. Yii2 负载均衡找不到JS,CSS

    在部署项目的时候,用了2台服务器.请求的时候用了负载均衡,导致 YII2 的静态文件(js,css...)报 404 ,原因是: 请求一个页面时 A服务器 去处理,但是静态资源缺请求到了 B服务器 , ...

  4. 带着canvas去流浪系列之五 绘制K线图

    [摘要] 用canvas原生API实现百度Echarts 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 任务说明 使用原生canvasAPI绘制 ...

  5. 批量注释 control+/

    批量注释 control+/ You can comment and uncomment lines of code using Ctrl+斜杠.Ctrl+斜杠 comments or uncomme ...

  6. 15 个优秀开源的 Spring Boot 学习项目,一网打尽!

    Spring Boot 算是目前 Java 领域最火的技术栈了,松哥年初出版的 <Spring Boot + Vue 全栈开发实战>迄今为止已经加印了 8 次,Spring Boot 的受 ...

  7. postman tests常用方法

    postman常用方法集合: 1.设置环境变量 postman.setEnvironmentVariable("key", "value"); pm.envir ...

  8. javascript类数组

    一.类数组定义: 而对于一个普通的对象来说,如果它的所有property名均为正整数,同时也有相应的length属性,那么虽然该对象并不是由Array构造函数所创建的,它依然呈现出数组的行为,在这种情 ...

  9. docker实践之docker-compose部署mysql

    文章目录 docker实践之docker-compose部署mysql 1.安装部署docker 2.编写docker-compose文件 3.编写配置文件和初始化文件 4.启动数据库 5.检查初始化 ...

  10. ELK filebeat的安装

    安装参考官方文档: https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html 注意事项: Fr ...