Winlogbeat 不区分大小写的搜索

Winlogbeat case insensitive search

在 Kibana 中使用 Discover 时,我可以输入“hostxyz”,系统将执行不区分大小写的搜索。

但是,当执行相同类型的搜索但针对特定字段时,例如 winlog.computer_name: "hostxyz",查询将区分大小写。

我已提取此示例的映射,如下所示。

            "computer_name": {
              "type": "keyword",
              "ignore_above": 1024
            },

这可能是一个显而易见的问题,但有人能指出我在这里做错了什么吗?

computer_name 字段的类型是关键字,这使其成为区分大小写的字段,并且对该字段的任何搜索都将区分大小写。

搜索不仅区分大小写,而且按原样搜索,这意味着搜索词应与字段中的值完全匹配。

如果你想让它不区分大小写,你可以这样做。

在您的索引中创建以下分析器

 "analyzer": {
    "keyword_lowercase": {
      "tokenizer": "keyword",
      "filter": [
        "lowercase"
      ]
    }

}

然后,按如下方式更改索引中的映射

"computer_name": {
          "type": "text",
          "analyzer": "keyword_lowercase",
          "ignore_above": 1024
        }

这仍然是关键字搜索(完全匹配),但会索引数据并生成小写标记。

对于通用搜索,您可以使用标准分析器(默认情况下具有小写过滤器)代替 keyword_lowercase。 或者您可以简单地完全省略“analyzer”字段,elasticsearch 将默认为您的字段使用标准分析器。 更好的方法可能是使用多字段以多种方式分析 computer_name,例如

"computer_name": {
          "type": "text",
          "ignore_above": 1024
      "fields": {
        "lowercase_keyword": {
               "type": "text",
               "analyzer": "keyword_lowercase",
               "ignore_above": 1024
    }
      }
        }

您可以在查询中使用 computer_name 字段进行一般搜索,并使用 computer_name.lowercase_keyword 进行关键字(精确)匹配。