在ElasticSearch中使用更多像这样(mlt)时应用Analyzer

时间:2016-04-27 13:17:39

标签: elasticsearch

我想在ElasticSearch中修改More Like This查询的默认分析器,以便忽略停用词(最好不要定义它们)。为了尝试这一点,我使用explain功能构建了一个查询,我希望stop analyzerStop)如下所示,

{"search":{"size":1, "fields":["our_id"],"explain":true,"query":{
"mlt":{"analyzer": "Stop", "docs":[{"_id":"99999999"}],
"fields":["text_for_matching"]}} }}

然而,MLT似乎没有解析我的分析器(因为我可以使用任何我喜欢的东西并且没有错误或改变),因此我看到停止词仍然包含在根据{{的相似度计算中1}},explain

如何正确地使用分析仪参数化MLT,然后在搜索中忽略停用词?或者我是否需要更改初始索引以获得我想要的行为?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

要实现此目的,您需要将like选项与per_field_analyzer

一起使用
{
   "size": 1,
   "fields": [
      "our_id"
   ],
   "explain": true,
   "query": {
      "mlt": {
         "like": [
            {
               "_type": "test",
               "_id": 99999999,
               "per_field_analyzer": {
                  "text_for_matching": "stop"
               }
            }
         ],
         "fields": [
            "text_for_matching"
         ]
      }
   }
}