term query和match query、filter和must区别
1.term query和match query区别
针对字段类型是text类型,term 和 match 的最大区别是:
- term搜索时不分词
- match搜索时需要分词
- term用于精确查询,match用于全文检索
其中,match等于是bool+term查询,例如查询“中国足球”,使用match query,需要先分词“中国”、“足球”,然后执行
{
"bool": {
"should": {
"term": {
"field": "中国"
}
},
"should": {
"term": {
"field": "足球"
}
}
}
}
若字段类型是int等数值类型,这两个等于没啥区别。
2.Query和Filter区别
- Query Context,会进行相关性算分 ,有_socre返回
- Filter Context,不会进行相关性算分,这种方式可利用缓存来提高检索的速度和性能,返回的_score都是0
两个的对比:
must和filter查询,都是必须匹配,但是filter性能会高一些。
来源:CSDN
作者:腊-八-粥
链接:https://blog.csdn.net/HuoqilinHeiqiji/article/details/103993759