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. 简单ORM的实现

    简单的orm实现 我们在使用各种框架的时候,关于数据库这方面的使用,框架给我们提供了很好的封装,这个就是orm 关系映射 orm的底层无非就是做了关系映射 数据库的表(table) --> 类( ...

  2. 大白话OSI七层协议

    目录 一.物理层 二.数据链路层 2.1 以太网协议 2.2 Mac地址 2.3 广播地址 三.网络层 3.1 IP协议详解 3.1.1 IP地址的两部分 3.2 子网掩码详解 3.3 IP数据包详解 ...

  3. 【Python成长之路】python 基础篇 -- global/nonlocal关键字使用

    1 课程起源 有一次在工作中编写python工具时,遇到一个 问题:从配置文件读取变量A后,无法在内存中把A的值改变成新的内容.为了解决"更新内存中变量"的这个问题,查找了一些帖子 ...

  4. RDS关系型数据库 入门 01 创建关系型数据库实例【华为云分享】

    [摘要] 关系型数据库(Relational Database Service,简称RDS)是一种基于云计算平台的即开即用.稳定可靠.弹性伸缩.便捷管理的在线关系型数据库服务.RDS具有完善的性能监控 ...

  5. JGit----将 Git 嵌入你的应用

    如果你想在一个 Java 程序中使用 Git ,有一个功能齐全的 Git 库,那就是 JGit . JGit 是一个用 Java 写成的功能相对健全的 Git 的实现,它在 Java 社区中被广泛使用 ...

  6. luogu P2650 弹幕考察

    题意简化:求某个区间在一组区间中覆盖的数量 对于这个问题,我们很容易想到线段树,或者树状数组,但是maxlongint不能让我们这么做 30分思路: 对于m个区间,枚举n个区间判断与它是否重合 但是O ...

  7. Mybatis的模糊查询以及自动映射

    Mybatis的模糊查询 1.  参数中直接加入%% ? 1 2 3 4 5 6 7 8 9 param.setUsername("%CD%");       param.setP ...

  8. openlayers6结合geoserver实现地图空间查询(附源码下载)

    前言 之前写过一篇 openlayers4 版本的地图空间查询文章,但是由于是封装一层 js 代码写的,很多初学者看起来比较有点吃力,所以本篇文章重新写一篇地图空间查询文章,直接基于最新版本 open ...

  9. java之JVM内存模型

    简而言之: 基础数据类型,值是保存在栈中: 引用数据类型,值保存在堆中,栈中保存的是引用数据类型在堆中的地址: 方法区:保存所有的class和static变量:

  10. HDU 6118 度度熊的交易计划(网络流-最小费用最大流)

    度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个片区能够花费a[i]元生产1个商品,但 ...