Elasticsearch的DSL之query and filter

本文深入探讨Elasticsearch的DSL中的query和filter。query context用于评估文档与查询语句的匹配程度并计算分数,而filter context则只判断匹配与否,不计算分数,但能被缓存以提升效率。为了提高搜索效率,通常建议非评分需求使用filter。filter由于不涉及分数计算,其执行速度比query更快。
摘要由CSDN通过智能技术生成

在Elasticsearch的DSL中, 有两个概念需要搞清楚, query 和 filter, 对ES的检索效率是很有影响的。

下面就来搞清楚这两个关键字的具体函数。


query context: 回答的是这个文档在多大程度上匹配查询语句(How well does this document match this query clause?),会计算出一个分数_score。


filter context: 回答的是这个文档与查询语句是否匹配,是 或者 不是(Does this document match this query clause?),不会计算分数。


除了需要匹配程度的查询(有_score的情况)使用query, 其余的查询都应该使用filter。(As a general rule, use query clauses for full-text search or for any condition that should affect the relevance score, and use filters for everything else.


filter的结果是会被ES缓存的, 以此来提高效率。


另外, filter由于不计算分数及排序, 所以, 速度较 query要快。


下面的例子来自https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html

GET _search
{
   
  "query": {
    
    "bool": {
    
      "must": [
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值