ElasticSearch - 模糊关键字匹配

ElasticSearch - Fuzzy Keyword Match

我正在寻找一种方法来模糊匹配单词相等的字段。

即。如果我有一个值是这样的字段:-

foobar
foobar number2
barfoo
barfoo number2

我用 fooba 搜索我只想 return 文档 foobar 而不是 foobar number2

如果我用 number2 搜索,我不想 return 任何东西,因为两个 number2 值都有 2 个词。

我知道术语查询不能模糊。这对任何查询都可行吗?

我正在使用 elasticsearch 5.4

谢谢

经过 2 天的斗争,我在发布问题 20 分钟后解决了这个问题。

您需要使用 keyword 分词器为字段创建自定义分析器:-

"analyzer": {
   "all_words_analyzer": {
      "filter": [
          "lowercase"
      ],
      "type": "custom",
      "tokenizer": "keyword"
   }
}

然后在字段上设置:-

"term": {
    "type": "text",
    "analyzer": "all_words_analyzer"
}

现在正常的模糊匹配将像上面那样工作。

"query": {
   "fuzzy": {
       term": {
           "value": "fooba"
       }
   }
}