我是ES的新手。我无法找到确切的短语匹配。
假设我的索引有一个名为movie_name的字段。 假设我有3个具有以下值的文档
如果我的搜索查询是Mad Max,我希望返回前2个文档而不是第3个。
如果我执行“not_analyzed”解决方案,我将只获得文档1而不是2.
我错过了什么?
答案 0 :(得分:4)
我能够使用以下命令来执行此操作,基本上创建自定义分析器,使用关键字tokenizer来防止标记化。然后在“映射”中使用分析器获取所需的字段,在本例中为“movie_name”。
PUT /movie { "settings":{ "index":{ "analysis":{ "analyzer":{ "keylower":{ "tokenizer":"keyword", "filter":"lowercase" } } } } }, "mappings" : { "search" : { "properties" : { "movie_name" : { "type" : "string", "analyzer":"keylower" } } } } }
答案 1 :(得分:0)
像这样使用Phrase matching:
{
"query": {
"match_phrase": {
"movie_name": "a"
}
}
}