博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kibana的query string syntax 笔记
阅读量:4324 次
发布时间:2019-06-06

本文共 2110 字,大约阅读时间需要 7 分钟。

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

posted on
2019-05-27 11:53 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/FlyAway2013/p/10929927.html

你可能感兴趣的文章
迷宫实现
查看>>
如何使用Transact-SQL进行事务处理[示例]
查看>>
选择JSF不选Struts的十大理由
查看>>
01-编写CMS注意事项
查看>>
SQL 事务
查看>>
element的form表单中如何一行显示多el-form-item标签
查看>>
SQL Server两种分页的存储过程介绍
查看>>
09 audio和vedio标签
查看>>
【HDU 6299】Balanced Sequence
查看>>
【】minimum
查看>>
【CS Round #46 (Div. 1.5) B】Letters Deque
查看>>
自制常用工具类Common
查看>>
hdoj 4940 强连通图
查看>>
Shell脚本编写
查看>>
Spark系列(三)SparkContext分析
查看>>
UnityWebReqest和WWW,请求web数据打包到Android手机上,报错 Unknown error记录
查看>>
Java字符串首字母大写
查看>>
一个前端博客(7)——事件绑定和移除事件
查看>>
X.509,RSA,PKCS 普及
查看>>
探讨e.target与e.currentTarget
查看>>