在 Kibana 上过滤方括号

Filter square brackets on Kibana

我很难在 Kibana 中过滤我的日志消息中的方括号。 假设我有消息:

[BOOK] The Book 32 was sold
Exception on buying BOOK

而且我只想过滤完全 [BOOK] 的消息(所以我应该只得到第一个)。

我尝试过使用我能想到的各种转义来过滤自由文本:

[BOOK]
"[BOOK]"
\[BOOK\]
"\[BOOK\]"
\[BOOK\]

还尝试按消息字段过滤:

message: [BOOK]*
message: "[BOOK]*"
message: \[BOOK\]*
message: "\[BOOK\]*"

但 Kibana 似乎只是简单地忽略了方括号并且总是同时显示这两个消息,只突出显示 BOOK 单词。

如何强制它搜索 []

如果您的 message 字段是经过分析的文本,则分析器会删除括号。您应该 运行 针对关键字数据类型进行查询。更准确地说,您需要 运行 针对关键字数据类型的正则表达式,例如 prefixwildcard 查询。

我们假设 message 的映射是 keyword。如果 [BOOK] 始终位于日志消息的开头,则有效查询如下:

{ "query": {
  "prefix": {
    "message": "[BOOK]"
  }
}}

如果您想在 message 值的任何部分搜索 [BOOK],那么您需要这样的内容:

{ "query": {
  "wildcard": {
    "message": "*[BOOK]*"
  }
}}