首页 > 解决方案 > 弹性搜索如何分析带有“-”的 URL/单词

问题描述

我正在尝试找出一种方法来分析其中带有“-”的单词/ URL。前任。“nnn999-9-prod-nnn9.test.com” | “思科-NX-4”)。

这意味着“nnn999-”不会匹配任何东西,但“nnn999”或“nnn999-*”会,但我希望“nnn999-”也匹配。

我尝试了标准分析器和“uax_url_email”标记器,但都以相同的方式解析它,给出相同的标记[“nnn999”、“9”、“prod”、“nnn9”、“test.com”]。我要做的最后一件事是为每个属性 (10+) 使用正则表达式创建一个自定义分析器。

将不胜感激一些帮助!

标签: elasticsearchelasticsearch-5

解决方案


开箱即用,使用默认映射,您的示例应该可以工作。它将对索引和查询使用相同的标准分析器,因此您对“nnn999-”的查询将转换为“nnn999”。例如:

存储文件

POST my-index/_doc
{
  "test": "nnn999-9-prod-nnn9.test.com"
}

搜索文档

GET my-index/_search
{
  "query": { "match": { "test": "nnn999-" } }
}

结果

{
  "took": 4,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.2876821,
    "hits": [
      {
        "_index": "my-index",
        "_type": "_doc",
        "_id": "YXnNhGQBFtPd4lycLFbR",
        "_score": 0.2876821,
        "_source": {
          "test": "nnn999-9-prod-nnn9.test.com"
        }
      }
    ]
  }
}

查看您的索引映射会很有用。


推荐阅读