Elasticsearch之query与filter

Aggregation聚合

aggregation分为bucket和metric两种,分别作为词元划分和数值计算。其中的bucket aggregation还支持在自身结果的基础上叠加新的aggregation。这就是aggregation领先于facet的地方。比如实现一个时序百分比统计在facet接口无法直接完成,在aggregation接口就很简单。

query与filter

1、区别如下:
query是要相关性评分的,filter不要;
query结果无法缓存,filter可以。

所以,选择参考:
1、全文搜索、评分排序,使用query;
2、是非过滤,精确匹配,使用filter。

filter缓存

默认情况下,并不是所有的filter都能用缓存。常用的比如term、terms、prefix、range、bool等filter,其过滤结果明确,也容易设置缓存,ES就对这几个默认开启了filter cache工嗯呢该。而复杂一些比如:geo、script等filter,从filddata数据到过滤结果还需要进行一些列计算的,ES默认是不开启filter cache的。而想and、not、or这几个关系型filter,也是不开启的。如果想要强制开启这些默认没有的filter cache,需要在请求的JSON中带上“cache”:true参数。

query_then_fetch

ESd对请求的处理过程,是有不同类型的,默认的叫query_then_fetch。在这种情况下,各数据节点处理检索请求后,返回的是只包含文档id和相关性分之的结果,这一段处理,叫做query阶段;汇聚到这份结果后,按照分值排序,得到一个全集群最终需要的文档id,再向对应节点点发送一次文档获取请求,拿到文档内容,这一段处理叫做fetch阶段。两阶段都结束后才返回响应。
DFS_query_then_fetch类型,提高小数据量时的精确度;query_then_fetch类型在明确routing时可以省略一个数据来回;count类型,在不关心文档内容只需要计数时省略query极端;sacn类型批量获取数据省略query阶段(在reindex时就是使用这种类型)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值