跳至主内容

编写搜索查询

语法

搜索语法与Lucene语法高度相似。默认情况下,若未指定消息字段,所有消息字段都将纳入搜索范围。

包含术语的消息 ssh :

ssh

包含术语 ssh login :

ssh登录

包含精确短语 ssh登录 :

"ssh登录"

字段 type 包含 ssh :

type:ssh

字段 type 包含 ssh login :

type:(ssh OR login)

字段 type 包含精确短语 ssh登录 :

type:"ssh登录"

包含字段 type :

_exists_:type

不包含字段 type :

NOT _exists_:type

匹配正则表达式 ethernet[0-9]+ :

/ethernet[0-9]+/

默认情况下所有术语或短语以OR逻辑连接,因此至少命中一个条件的消息都会被返回。您可以使用 布尔运算符和分组 进行控制:

"ssh login" AND source:example.org 
("ssh login" AND (source:example.org OR source:another.example.org)) OR _exists_:always_find_me

也可使用NOT运算符:

"ssh login" AND NOT source:example.org 
NOT example.org

请注意AND、OR和NOT区分大小写,必须全部大写。

通配符: 使用 ? 替换单个字符,或使用 * 替换零个或多个字符:

source:*.org 
source:exam?le.org 
source:exam?le.*

注意:为避免内存过度消耗,前导通配符已被禁用! 您可以在 安全数据湖 配置文件中启用它们:

allow_leading_wildcard_searches = true

还需注意 message , full_messagesource 是默认被分析的唯一字段。虽然通配符搜索(使用 *? )适用于所有索引字段,但被分析字段的行为会略有不同。详情请参阅 通配符与正则表达式查询

模糊匹配: 可搜索相似术语:

ssh logni~ source:exmaple.org~

此示例采用 Damerau–Levenshtein距离算法 ,默认距离为 2 ,将匹配“ssh login”和“example.org”(查询中故意拼写错误)。

可按如下方式调整距离:

source:exmaple.org~1

还可使用模糊运算符进行 近似度 搜索,短语中的术语可存在不同/模糊间距且无需严格遵循定义顺序:

"foo bar"~5

数值字段支持 范围查询 方括号表示的范围是闭区间,花括号表示开区间,两者甚至可以组合使用:

http_response_code:[500 TO 504]
http_response_code:{400 TO 404}
bytes:{0 TO 64]
http_response_code:[0 TO 64]

还可以组合无边界范围运算符:

http_response_code:(>=400 AND <500)

可以对 日期字段 进行范围查询。关键是要确保时间选择器选定的时间段与您想搜索的范围相匹配。如果您搜索过去5分钟的数据,但实际搜索的时间是一周前,查询将不会返回任何结果。日期必须为UTC格式,且格式需与 安全数据湖 显示的格式一致:

timestamp:["2019-07-23 09:53:08.175" TO "2019-07-23 09:53:08.575"]

安全数据湖 为timestamp字段定制了索引映射,以 YYYY-MM-DD HH:MM:SS.sss 格式保存日期。如果Elasticsearch判定某个额外字段为日期并采用默认日期格式(即 YYYY-MM-DD HH:MM:SS.sss ),则在该时间段内的搜索示例如下:

otherDate:["2019-07-23T09:53:08.175" TO "2019-07-23T09:53:08.575"]

至少在Elasticsearch 6.x中,可以在时间范围内包含时区信息。查询示例如下:

otherDate:["2020-07-29T12:00:00.000-05:00" TO "2020-07-30T15:13:00.000-05:00"]

日期查询也可以是动态的,例如始终回溯指定时间:

otherDate:[now-5d TO now-4d]

转义

以下字符必须用反斜杠转义:

& | : \ / + - ! ( ) { } [ ] ^ " ~ * ?

示例:

resource:\/posts\/45326

错误类型

输入查询时,请注意警告和异常。如果输入的查询 安全数据湖 无法理解,会出现一个带有黄色感叹号的图标,并附带警告或异常消息。包括:

解析异常 :当出现解析错误时会抛出此异常。这通常发生在搜索查询语法出错时,错误信息应包含有关语法错误位置的详细信息。

无效运算符 :当运算符拼写错误时会出现此问题。例如, AND 是有效运算符,但 and 则无效。大多数情况下,运算符需大写。

未知字段 :当搜索查询中包含的字段在相关索引集中不存在时会出现此警告。该判断基于数据流与索引集的关系。

参数错误 :当搜索查询中使用未声明的参数时会出现此错误。 参数 需先定义才能包含在搜索中。