2017-10-11 130 views
0

我正在寻找一种方式来模糊匹配的字词相等的地方。ElasticSearch - 模糊关键字匹配

即。如果我有一个字段值,就像这样: -

foobar 
foobar number2 
barfoo 
barfoo number2 

,我和fooba搜索,我想只返回文档foobar,而不是foobar number2

如果我number2搜索我想不回任何两个number2值都有2个单词。

我知道术语查询不能模糊。这可能与任何查询?

我使用elasticsearch 5.4

感谢

回答

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" 
     } 
    } 
}