搜索语法
日志分析服务提供类 Lucene 语法来进行日志搜索,但需要注意,一旦有任何数据包含以下符号,无论使用哪种语法,在搜索时,需要以双引号("")
包含起来:
+ -
&& || !
( ) { } [ ]
^ ” ~ * ? : \
使用 lucene 语法搜索
条件编写规范
名称 | 语义 |
---|---|
* | 查询所有内容 |
AND | query1 AND query2,查询交集 |
OR | query1 OR query2,查询并集 |
NOT | query1 AND NOT query2,表示符合 query1,不符合 query2的结果,如 NOT status:200 不包含 status 值为 200 的数据 |
() | 把一个或多个query合并成一个query,提升优先级,如 ip:(a OR b) 查询 ip 字段为 a 或者 b 的数据 |
[] | 区间查询,包括边界,如 status:[400 TO 500] 查询 status 字段在 400 到 500 区间内的数据 |
{} | 区间查询,不包括边界,如 status:{400 TO 500} 查询 status 字段在 400 到 500 区间内的数据,并排除边界值 |
\ | 转义字符,如正则表达式搜索时表达式包含反斜杠的情况,如 request_path:/\/query\/abc\/.*/ 查询 request_path 字段匹配正则表达式 /path/abc/.* 的数据 |
>,=,<,<=,>= | 区间查询,如 status:>=500 查询 status 大于 500 的数据 |
正则表达式查询
正则表达式查询条件编写时,以"/"
开头和结尾。
比如:name:/joh?n(ath[oa]n)/
通配符查询
使用?
代替一个字符,*
代替0或者多个字符
比如:qu?ck bro*
- 注意使用这个查询会消耗大量资源,并且速度会降低。
查询举例:
字段名称name
,类型string
,包含内容a
的记录:
name:a
字段名称ip
,类型string
,包含内容a
或b
的记录:
ip:a OR ip:b
或者
ip:(a OR b)
字段名称hosts
,类型string
,包含内容a
或者b
,不包含c
的记录:
(hosts:a OR hosts:b) AND (NOT hosts:c)
字段名称ip
,类型string
,包含内容a
或b
,同时字段名称hosts
,类型string
,包含内容c
的记录:
(ip:a OR ip:b) AND (hosts:c)
字段名称createTime
,类型date
,包含内容2016-1-1
到2016-1-2
的记录:
createTime:[2016-01-01 TO 2016-01-02]
字段名称count
,类型long
或者float
,内容大于5的记录:
count:>5
文档反馈
(如有产品使用问题,请 提交工单)