弹性:是否可以禁用某些字段的模糊性?

时间:2016-05-12 21:41:56

标签: elasticsearch fuzzy-search

这是我的问题:

"multi_match":{  
   "query":"test",
   "fields":[  
      "name^2",
      "sortName^2",
      "externalId",
      "type^0.5"
   ],
   "type":"best_fields",
   "tie_breaker":0.3,
   "minimum_should_match":"30%",
   "fuzziness":"AUTO"
}

我的目标是让除了" externalId"之外的所有领域都有模糊性。原因是用户在搜索特定ID时找不到很多结果是没有意义的。

我认为如果某个字段设置为“未分析”字段。它不会应用模糊性,但似乎并非如此。

有没有办法在映射中指定字段不适合模糊?

1 个答案:

答案 0 :(得分:1)

由于你需要设置每个字段的模糊性,到目前为止我看到了两种方法:

  • 将2个查询与dis_maxbool查询相结合

  • 使用稍微笨拙的query_stringfuzziness设为0 externalId字段。查询可能如下所示:

    {
      "query": {
        "query_string": {
          "query": "name:test^2 sortName:test^2 externalId:test~0 type:test^0.5"
        }
      }
    }