lucene查询语法简介

为什么要介绍lucene:我们在ELK中搜索相关日志的时候,搜索语言需要遵循Lucene才可以匹配到需要的信息

什么是LuceneLucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供

参考:

https://lucene.apache.org/core/2_9_4/queryparsersyntax.html#NOT

http://www.lucenetutorial.com/lucene-query-syntax.html


1 
全文搜索(有空格一定要 用双引号 引起来)

举例 搜索含有my name的字符串

"my name"因为中间有空格,所有需要用双引号引起来。

2 字段搜索
可以按页面左侧显示的字段搜索
限定字段全文搜索: field:value 
精确搜索:关键字加上双引号 filed:"value" 
http.code:404 搜索http状态码为404的文档
字段本身是否存在
_exists_:http :返回结果中需要有http字段
_missing_:http :不能含有http字段

举例: 
a. 搜索domainname为search.s.xxx.com的
domainname:search.s.d.xxx.com 
写法或者
domainname:"search.s.d.xxx.com"

b.搜索状态为400的 或者200的
status:404

c.范围值有
status:[400 TO 499]

与与操作 公用
status:500 AND remote_addr:X.X.X.X
或者
status:500 AND remote_addr:"X.X.X.X"

status:200 AND remote_addr:X.X.X.X


非且与
(NOT status:200) AND remote_addr:X.X.X.X

匹配 非status为200 的起remote_add是 X.X.X.X的
status:502 AND domainname:www.XXX.com

"png" NOT "A.XXX.com" NOT "=png"

3 通配符
? 匹配单个字符
* any 
+ >=0
? * 不能用作第一个字符,例如: ?text *text

 
4 逻辑操作
AND 
OR
+ :搜索结果中必须包含此项
- :不能含有此项
+apache -jakarta test :结果中必须存在apache,不能有jakarta,test可有可无
分组
(jakarta OR apache) AND jakarta
字段分组
title:(+return +"pink panther")
转义特殊字符
+ - && || ! () {} [] ^" ~ * ? :  
以上字符当作值搜索的时候需要用  转义

lunces语法: 不匹配v2字符串
domainname:"B.XXX.com" AND -request:"v2"

“-”操作符或者禁止操作符排除含有”-”后面的相似项的文

原文地址:https://www.cnblogs.com/AirCrk/p/6979222.html