Lucene查询语法,适用于 ELk Kibana 查询

Lucene查询语法,适用于 ELk Kibana 查询

Elasticsearch 构建在 Lucene 之上,过滤器语法和 Lucene 相同。本语法可用于 Kibana 界面的检索和 Grafana 看板对接 ES 的检索规则。

  • Kibana 上的检索语法
  • Grafana 上的检索语法

全文搜索

在搜索栏输入login,会返回所有字段值中包含 login 的文档

使用双引号包起来作为一个短语搜索 "like Gecko"

字段搜索

  • 可以按页面左侧显示的字段搜索
  • 限定字段全文搜索:field:value
  • 精确搜索:关键字加上双引号 filed:"value"
  • 精确过滤不存在的:字段前加上减号,关键字加上双引号 -filed:"value"
  • http.code:404 搜索 http 状态码为 404 的文档
  • -traceId:null tranceId字段不为null
  • 字段本身是否存在
    _exists_:http:返回结果中需要有 http 字段
    _missing_:http:不能含有 http 字段
  • 判断某个字段不为空字符串
    -corp.keyword:""

通配符搜索

Lucene 支持单个术语内的单个和多个字符通配符搜索(不在短语查询中)。

复制代码
? 匹配单个字符* 匹配0到多个字符kiba?a, el*search

注意:您不能使用_或?符号作为搜索的第一个字符。例如:?text _text

正则表达式搜索

Lucene 支持正向表达式搜索,性能较差

复制代码
name:/joh?n(ath[oa]n)/

模糊搜索

复制代码
quikc~ brwn~ foks~~:在一个单词后面加上~启用模糊搜索,可以搜到一些拼写错误的单词first~ 这种也能匹配到 frist

还可以设置编辑距离(整数),指定需要多少相似度

复制代码
cromm~1 会匹配到 from 和 chrome默认2,越大越接近搜索的原始值,设置为1基本能搜到80%拼写错误的单词

近似搜索

在短语后面加上~,可以搜到被隔开或顺序不同的单词,注意短语要使用双引号""包围

复制代码
"where select"~5 表示 select 和 where 中间可以隔着5个单词,可以搜到 select password from users where id=1

范围搜索

数值/时间/IP/字符串 类型的字段可以对某一范围进行查询

复制代码
length:[100 TO 200]
sip:["172.24.20.110" TO "172.24.20.140"]
date:{"now-6h" TO "now"}
tag:{b TO e} 搜索b到e中间的字符
count:[10 TO *] * 表示一端不限制范围
count:[1 TO 5} [ ] 表示端点数值包含在范围内,{ } 表示端点数值不包含在范围内,可以混合使用,此语句为1到5,包括1,不包括5可以简化成以下写法:
age:>10
age:<=10
age:(>=10 AND <20)
# in 查询
siteId:("mmr-public-beijing4-1"|"mmr-public-beijing4-2"|"mmr-public-beijing4-3"|"mmr-public-beijing4-4"|"mmr-public-beijing4-5")

grade:{60,80] # 搜索成绩grade字段小于等于80分,大于60分的

优先级

使用^使一个词语比另一个搜索优先级更高,默认为1,可以为0~1之间的浮点数,来降低优先级

复制代码
quick^2 fox

布尔运算符搜索

布尔运算符允许通过逻辑运算符组合术语。Lucene支持AND,"+",OR,NOT和" - "作为布尔运算符(注意:布尔运算符必须是ALL CAPS)。

OR

复制代码
"jakarta apache" jakartaor"jakarta apache" OR jakarta

AND

复制代码
"jakarta apache" AND "Apache Lucene"

+:搜索结果中必须包含此项

复制代码
+jakarta lucene

NOT

复制代码
"jakarta apache" NOT "Apache Lucene"NOT "jakarta apache"

-:不能含有此项

复制代码
"jakarta apache" -"Apache Lucene"

分组搜索

Lucene支持使用括号将子句分组以形成子查询。如果要控制查询的布尔逻辑,这可能非常有用。

复制代码
(jakarta OR apache) AND jakarta

字段分组搜索

Lucene支持使用括号将多个子句分组到单个字段。

复制代码
title:(+return +"pink panther")host:(baidu OR qq OR google) AND host:(com OR cn)

转义特殊字符搜索

Lucene支持转义属于查询语法的特殊字符。

复制代码
+ - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /以上字符当作值搜索的时候需要用\转义\(1\+1\)\=2用来查询(1+1)=2
相关推荐
刘一说21 小时前
CentOS部署ELK Stack完整指南
linux·elk·centos
路上阡陌1 天前
ELK 部署
运维·elk·jenkins
risc1234566 天前
【lucene】advanceshallow就是遍历跳表的,可以看作是跳表的遍历器
lucene
cyh男6 天前
Lucene 8.7.0 版本的索引文件格式
搜索引擎·全文检索·lucene
risc1234567 天前
【lucene核心】impacts的由来
lucene
斯普信专业组8 天前
ELK 统一日志分析系统部署与实践指南(下)
运维·elk
听说唐僧不吃肉8 天前
解析ELK(filebeat+logstash+elasticsearch+kibana)日志系统原理以及k8s集群日志采集过程
elk·elasticsearch·kubernetes
在未来等你8 天前
Elasticsearch面试精讲 Day 5:倒排索引原理与实现
elasticsearch·搜索引擎·面试·全文检索·lucene·分词·倒排索引
斯普信专业组8 天前
ELK 统一日志分析系统部署与实践指南(上)
elk
risc1234569 天前
【lucene】 中的impactsenum与impactsdisi有啥区别?
lucene