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



这是我的查询:

"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时发现很多结果是没有意义的。

我认为,如果一个字段被设置为"未分析",它就不会应用模糊性,但事实似乎并非如此。

有没有一种方法可以在映射中指定字段不是模糊性的候选者?

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

  • 使用dis_max或bool查询组合2个查询

  • 对于externalId字段,使用模糊性设置为0的有点笨拙的query_string。查询可能看起来像:

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

最新更新