multi_match 多字段查询
本章定位:搜索框的输入通常需要同时搜索标题、描述、标签等多个字段。multi_match 一次查询覆盖多字段,支持权重和匹配策略。
定义与作用
multi_match 接受一个查询字符串,在多个字段上执行 match 查询。类型包括:
best_fields(默认):取最佳字段的得分most_fields:累加所有字段得分cross_fields:将多字段视为一个整体phrase/phrase_prefix:短语匹配变体
完整示例:杨英的课程搜索
POST /courses/_search
{
"query": {
"multi_match": {
"query": "Python 数据分析",
"fields": ["title^3", "description^1", "outline^0.5"],
"type": "best_fields"
}
}
}
权重设置:标题匹配权重 3x、描述 1x、大纲 0.5x。
小结
best_fields 适合关键词搜索(匹配度最高的字段决定分数),most_fields 适合多字段同时匹配的场景,cross_fields 适合结构化字段混合搜索。