我正在寻找一种方法来模糊匹配单词相等的字段。
即。如果我有一个像这样的值的字段: -
foobar
foobar number2
barfoo
barfoo number2
我使用fooba
进行搜索我只想返回文档foobar
而不是foobar number2
如果我使用number2
进行搜索,我希望不返回任何内容,因为number2
个值都有2个字。
我知道术语查询不会模糊。任何查询都可以吗?
我正在使用elasticsearch 5.4
由于
答案 0 :(得分:0)
经过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"
}
}
}