首页 > 解决方案 > 带有反斜杠的字段的正确分析器

问题描述

因此,我正在尝试使用正确的分析器为 Windows 凭据字段设置新的索引映射,该字段的格式为domain\username.

我希望能够搜索域、用户名和域\用户名。但是默认分析器似乎忽略了反斜杠(意思是,如果我尝试搜索域\用户名,它将搜索“域或用户名”而忽略反斜杠),如果我尝试使用空格分析器,它似乎只匹配域\用户名。

有小费吗?

标签: elasticsearchelasticsearch-analyzers

解决方案


您可以使用路径层次标记器,将反斜杠设置为分隔符 -此处的文档 尝试:

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "custom_path_tree": {
          "tokenizer": "custom_hierarchy"
        },
        "custom_path_tree_reversed": {
          "tokenizer": "custom_hierarchy_reversed"
        }
      },
      "tokenizer": {
        "custom_hierarchy": {
          "type": "path_hierarchy",
          "delimiter": "\"
        },
        "custom_hierarchy_reversed": {
          "type": "path_hierarchy",
          "delimiter": "\",
          "reverse": "true"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "file_path": {
        "type": "text",
        "fields": {
          "tree": {
            "type": "text",
            "analyzer": "custom_path_tree"
          },
          "tree_reversed": {
            "type": "text",
            "analyzer": "custom_path_tree_reversed"
          }
        }
      }
    }
  }
}
POST my_index/_analyze
{
  "analyzer": "custom_path_tree",
  "text": "C:\Windows\Users"
}

推荐阅读