首页 > 解决方案 > 如何使用 [] 搜索字符串

问题描述

kibana中,如何搜索所有MESSAGES包含的字符串[]

如果我使用"hostname []"它进行搜索MESSAGE,如下图所示匹配完整的有效负载,但是如何匹配所有包含空[]忽略字段的记录,例如hostname [3]但包括条目foo bar hostname []

在此处输入图像描述

标签: elasticsearchkibana

解决方案


标准分词器会在遇到空格或标点符号时拆分单词,不包括特殊字符,您可以看到 elasticsearch 是如何分析的:

GET _analyze
{
  "analyzer" : "standard",
  "text" : "function []"
}

{
  "tokens": [
    {
      "token": "function",
      "start_offset": 0,
      "end_offset": 8,
      "type": "<ALPHANUM>",
      "position": 0
    }
  ]
}

正在排除[],现在让我们用whitespace分析仪测试

GET _analyze
{
  "analyzer" : "whitespace",
  "text" : "function []"
}
{
  "tokens": [
    {
      "token": "function",
      "start_offset": 0,
      "end_offset": 8,
      "type": "word",
      "position": 0
    },
    {
      "token": "[]",
      "start_offset": 9,
      "end_offset": 11,
      "type": "word",
      "position": 1
    }
  ]
}

所以对于这个特定的场景,只需在映射中进行更改,在whitespace分析器的字段中设置:

 "MESSAGE": {
    "type": "text",
    "analyzer" : "whitespace"
 }

在此处输入图像描述


推荐阅读