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