match 查询会先分析普通文本输入再搜索。term 查询要求匹配一个已索引的 term,不对输入进行全文分析。
用一个文档看出区别
假设 title 是 text,分析器会分词并转小写。标题 Blue Shoes 被索引为 blue 和 shoes。以下是两种可替换使用的搜索请求体:
json
match 查询会先分析普通文本输入再搜索。term 查询要求匹配一个已索引的 term,不对输入进行全文分析。
假设 title 是 text,分析器会分词并转小写。标题 Blue Shoes 被索引为 blue 和 shoes。以下是两种可替换使用的搜索请求体:
一个包含详细解答的 IT 面试题库——从初级到高级。
捐赠这会把输入分析成与已存 term 兼容的词,因此文档可以匹配。
{"query":{"term":{"title":"Blue Shoes"}}}
这要求存在一个完整的 term Blue Shoes。索引中没有这个完整 term,所以在所述映射下,文档不会匹配。
对于 keyword 字段 status,用值为 published 的 term 精确过滤状态。判断大小写行为时,应检查规范化设置。
也要区分词与短语:match 不会自动要求所有词都出现或保持原顺序。需要全部词时使用合适的 operator;需要词序时使用 match_phrase。
官方文档.