身安不如心安,屋宽不如心宽 。

term查询和match查询的区别

Elasticsearch | 作者 jutem | 发布于2016年04月15日 | 阅读数:13235

下列字符串通过ik分词以后,我通过“西域”关键字,无论是term还是match都能查询到。所以请问一下这两者具体在功能上有什么区别?
 
字符串:【西域美农_薄皮核桃250g*2袋】新疆特产零食坚果大核桃仁非纸皮
已邀请:

helloes

赞同来自: jutem


term用于精确查询,match用于全文检索。


在你的例子中,“【西域美农_薄皮核桃250g*2袋】新疆特产零食坚果大核桃仁非纸皮”经过ik分词,“西域”被分成一个词存在于索引中,当用term查询时,是把“西域”整个词拿去匹配的,索引里面有这个词,所以能查出来;而match会先对“西域”进行分词,查询语句被转化为bool + term查询(如下所示),所以也能查到结果。
{
"bool": {
"should": {
"term": {
"field": "西域"
}
}
}
}

 

要回复问题请先登录注册