8

我是 ES 新手。我无法找到完全匹配的词组。

假设我的索引有一个名为movie_name 的字段。假设我有 3 个具有以下值的文档

  1. 电影名 = 疯狂的麦克斯
  2. 电影名 = 疯狂的麦克斯
  3. 电影名 = 疯狂最大 3d

如果我的搜索查询是 Mad Max,我希望返回前 2 个文档,而不是第 3 个。

如果我执行“not_analyzed”解决方案,我将只得到文档 1 而不是 2。

我错过了什么?

4

2 回答 2

4

我可以使用以下命令来做到这一点,基本上是创建一个自定义分析器,使用关键字 tokenizer 来防止标记化。然后在所需字段的“映射”中使用分析器,在本例中为“movie_name”。

        放/电影
        {
      “设置”:{
         “指数”:{
            “分析”:{
               “分析仪”:{
                  “键下”:{
                     “分词器”:“关键字”,
                     “过滤器”:“小写”
                  }
               }
            }
         }
      },
        “映射”:{
            “搜索” : {
                “特性” : {
                    “电影名称”:{“类型”:“字符串”,“分析器”:“keylower”}
                }
            }
        }
    }

于 2015-05-21T05:59:21.677 回答
0

像这样使用短语匹配

{
"query": {
    "match_phrase": {
        "movie_name": "a"
    }
}
}
于 2015-05-20T23:08:55.217 回答