我是 ES 新手。我无法找到完全匹配的词组。
假设我的索引有一个名为movie_name 的字段。假设我有 3 个具有以下值的文档
- 电影名 = 疯狂的麦克斯
- 电影名 = 疯狂的麦克斯
- 电影名 = 疯狂最大 3d
如果我的搜索查询是 Mad Max,我希望返回前 2 个文档,而不是第 3 个。
如果我执行“not_analyzed”解决方案,我将只得到文档 1 而不是 2。
我错过了什么?
我是 ES 新手。我无法找到完全匹配的词组。
假设我的索引有一个名为movie_name 的字段。假设我有 3 个具有以下值的文档
如果我的搜索查询是 Mad Max,我希望返回前 2 个文档,而不是第 3 个。
如果我执行“not_analyzed”解决方案,我将只得到文档 1 而不是 2。
我错过了什么?
我可以使用以下命令来做到这一点,基本上是创建一个自定义分析器,使用关键字 tokenizer 来防止标记化。然后在所需字段的“映射”中使用分析器,在本例中为“movie_name”。
放/电影
{
“设置”:{
“指数”:{
“分析”:{
“分析仪”:{
“键下”:{
“分词器”:“关键字”,
“过滤器”:“小写”
}
}
}
}
},
“映射”:{
“搜索” : {
“特性” : {
“电影名称”:{“类型”:“字符串”,“分析器”:“keylower”}
}
}
}
}
像这样使用短语匹配:
{
"query": {
"match_phrase": {
"movie_name": "a"
}
}
}