以下Kibana搜索栏中搜索(lucene语法)
。。。。。从印象笔记贴过来变形了。。。。。。。。。。。
6.2.1的Elasticsearch "lucene_version" : "7.2.1"
@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
用~表示近似搜索(放在末尾)
对数值和时间都可以进行范围搜索[中括号表示端点数值包含在内], {大括号表示端点数值不包含在内},当然也可以使用>< =这些。
网友评论