elasticsearch - ElasticSearch-模糊关键字匹配

标签 elasticsearch lucene elasticsearch-5

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

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

foobar
foobar number2
barfoo
barfoo number2

我用fooba搜索,我只想返回文档foobar而不是foobar number2
如果我使用number2搜索,由于两个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"
       }
   }
}

关于elasticsearch - ElasticSearch-模糊关键字匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46685099/

相关文章:

elasticsearch - 带有数字标记的elasticsearch映射

node.js - 如何检查嵌套对象内是否存在所有值elasticsearch

elasticsearch - 更新ElasticSearch映射类型而不删除它

elasticsearch - ElasticSearch |如何搜索包含空格的字符串列表?

elasticsearch - 关键字字段应该是数组还是单个字符串?

search - elasticsearch按范围查询日期

elasticsearch - ElasticSearch-将索引还原到较低版本

mysql - Logstash 从 MySQL 一对多导入

python - 如何将搜索字符串与Python中的内容相匹配

lucene - lucene模糊搜索是懒惰的吗?