我有文件 list

[
  {
    "shortName": "CA",
    "longName": "California"
  },
  {
    "shortName": "New York",
    "longName": "New York"
  },
]
如何配置查询以仅选择匹配的第一个字段,类似于maximumSouldMatch = 1
例如,如果我搜索New York,则它应仅匹配shortName,但不能同时匹配两者,因为在这种情况下,得分将翻倍

最佳答案

multi_match query best_fields type(碰巧是默认值)一起使用,返回的分数将是最佳匹配字段之一,但如果两个字段都匹配,则不会合并(例如most_fieldscross_fields就是这种情况)

{
  "query": {
    "multi_match" : {
      "query" : "New York",
      "fields" : [ "shortName", "longName" ]
    }
  }
}

08-28 13:56