ELK漫漫之路

kibana使用Lucene语法

2018-08-09  本文已影响0人  续哥儿

以下Kibana搜索栏中搜索(lucene语法)
。。。。。从印象笔记贴过来变形了。。。。。。。。。。。

6.2.1的Elasticsearch "lucene_version" : "7.2.1"

http://lucene.apache.org/core/7_2_1/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package.description
以下以此条举例:

@timestamp:August 30th 2018, 19:37:45.034 time:August 30th 2018, 19:37:45.000 detail:user_activities_direct_reward_base_ex.go:22: activity direct reward submit (14008, -1) err (submitted).

1.语法关键字 :

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ 如果所要查询的查询词中本身包含关键字,则需要用\进行转义

2.不分词查询(Term)---全文搜索 注:引号内通配符不适用

例:搜索 "submitted" 即可找到我们所需的**

搜索 "submitt" 将什么都搜不到**

搜索 sub* 也能搜索到---这里主要不要加引号**

3.域内查询(filed)---指定搜索范围 注:引号内通配符不适用**

例:搜索 detail: " activity direct reward submit" 只匹配detail区域内的 activity direct reward submit关键字**

搜索 detail:activi?? 只匹配detail区域内的 activi关键字**

搜索 detail:activity direct reward submit 可以认为是OR查询 detail区域只对activity生效 direct reward submit这3个单词则为全文搜索,任意一个匹配都会被抓出

4.通配符查询 支持两种通配符:?表示一个字符,*表示多个字符`

例 activi?y acti*y **

Note: You cannot use a * or ? symbol as the first character of a search.

5.模糊查询 ------- (默认2,可选范围0-2,浮点数表示在Lucene5.0中已移除)

模糊查询的算法是基于 Damerau-Levenshtein Distance,也即当两个词的差别小于距离

例:搜索 submitt~2

例: 搜索 submitt~1 就无法搜索出 submitted

6.临近搜索

例 搜索 "activity  submitted"~10 表示activity  submitted这2个单词间可以相隔10个单词 "activity  submitted"~2 就搜索不出数据

7.正则查询---正则查询需要在2个/之间(不是太好用,也可能我不会用---贴上官方案例)

Lucene supports regular expression searches matching a pattern between forward slashes "/". The syntax may change across releases, but the current supported syntax is documented in the RegExp class. For example to find documents containing "moat" or "boat":

/[mb]oat/

8.区间查询:

区间查询包含两种,一种是包含边界,用[A TO B]指定,一种是不包含边界,用{A TO B}指定。

例 time:[2018-08-30T11:36:00 TO 2018-08-30T11:37:00],当然区间查询不仅仅用于时间,如title:{Aida TO Carmen}

9.权重查询---(默认为1,仍然可以小于1--不知道小于1的意义何在)

可以在查询词后面加^N来设定此查询词的权重,默认是1,如果N大于1,则说明此查询词更重要,如果N小于1,则说明此查询词更不重要。

如jakarta^4 apache,"jakarta apache"^4 "Apache Lucene"

10.布尔查询

布尔操作符包括连接符,如AND(+),OR,和 NOT (-) 必须全大写

例:detail:"submitted" AND fields.GameZone: "ios2" 等同 +detail:"submitted"+fields.GameZone: "ios2"

11.混合查询

例 ( submitted OR expired ) AND time:[2018-08-30T11:36:00 TO 2018-08-30T11:37:00] 包含 submitted 或者 expired并且在这个时间段内的数据

12.区域混合查询

例 detail:(+submitted -" expired in pack table")

以下是调用API的搜索

在http/xxx.com/index/_search?q=就是querystring语法

全文检索 q=dog

区域检索 q=animal:dog

单字段精确检索 q=animal:"dog"

多个组合条件检索 q=animal:("dog" OR "cat") AND NOT kind: "wild"

字段存在 exists:animal 字段不存在missing: animal

用~表示近似搜索(放在末尾)

对数值和时间都可以进行范围搜索[中括号表示端点数值包含在内], {大括号表示端点数值不包含在内},当然也可以使用>< =这些。


上一篇下一篇

猜你喜欢

热点阅读