elasticsearch小记之——query和filter的主要区别

下面讲讲我一般使用的场景

  1. 我是先使用filter把不需要的过滤掉,例如现在有一个电子商务的网站,我要查询一个category的id为1下面的所有产品,那么我首先会使用filter把category id等于1的产品过滤出来,也就是查出来
  2. 对于上面的filter出来的结果我再这个category下面查询name为“五子弥勒”的产品,这个时候我就会使用query,为什么呢,因为可能有的产品的name完全match 这个“五子弥勒”的关键字,但是有的产品可能只会match其中的一个词汇,所以,如果我需要把有相似性的查出来,这个是query是具备这个功能的,query的本质不是筛选,而是查询。query他会给结果打分,然后按照分数进行一个排序,如果命中的比较多,分数自然就很高,那么就会排在前面。这里提到了一个打分的概念,个人认为这个打分主要还是看分词器对他的命中,然后给一个评估,关于分词器,我会在后面的博客中提到。

所以,这个时候,大家应该知道filterquery的主要区别了,另外关于性能的我在提一下,上面提到 filter不进行打分的,他只是一个筛选,对不感兴趣的直接筛选掉;而query需要打分,可以想象成是一个命中率的概念,是一个率,不过如果你不想看到打分,你可以通过参数去控制,结果也就没有排序了,但是实际上,对性能的提升不大,因为主要的性能不是放在排序上面,而是在匹配上面

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值