首页/数据/NoSQL 速查/multi_match 多字段查询
本包目录(322 条)
MongoDB99 条
Elasticsearch89 条
ClickHouse56 条时序与列式28 条选型与架构50 条

multi_match 多字段查询

multi_match 把一个查询串同时作用到多个字段:默认 best_fields 取单字段最高分,most_fields 汇总各字段分值,cross_fields 把多字段当作一张大表处理。

NoSQL 速查数据更新于 2026-10-12
best_fields默认:以命中得分最高的单个字段决定排名,适合同义字段(title/title.en)
most_fields累加多个字段的得分,适合同一内容的不同分词方式
cross_fields按词条跨字段匹配,适合 first_name + last_name 这类被拆开的字段

示例

示例
GET /my-index/_search
{
  "query": {
    "multi_match": {
      "query": "quick brown fox",
      "fields": ["title^3", "body"],
      "type": "best_fields",
      "tie_breaker": 0.3
    }
  }
}
fields 里的 ^ 数字是字段权重;tie_breaker 让次优字段的分值按比例参与,避免同分排序抖动。

易错点

  • cross_fields 要求各字段使用相同分词器,否则匹配行为难以预料
  • 字段权重写得过大可能让次要字段完全主导排序,调权重前先用 explain 看分值构成

数据来源与参考

  • Elasticsearch Guide: Multi-match query
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌