Elasticsearch(006):es中filtered和filter的区别

文章目录

1. bool 和 filtered

1.1 说明

es 5.0版本更新后,filtered的查询将替换为bool查询。

filtered是比较老的的版本的语法。现在目前已经被bool替代。推荐使用bool。

官方文档地址:链接

1.2 示例使用

老版本写法

GET _search
{
  "query": {
    "filtered": {
      "query": {
        "match": {
          "text": "quick brown fox"
        }
      },
      "filter": {
        "term": {
          "status": "published"
        }
      }
    }
  }
}

新版本的写法

GET _search
{
  "query": {
    "bool": {
      "must": {
        "match": {
          "text": "quick brown fox"
        }
      },
      "filter": {
        "term": {
          "status": "published"
        }
      }
    }
  }
}

2. filter的两种用法

  • 嵌套在bool下

    {
    “query”: {
    “bool”: {
    “must”: {
    “term”: {
    “term”:{“title”:“kitchen3”}
    }
    },
    “filter”: {
    “term”: {
    “price”:1000
    }
    }
    }
    }
    }

  • 在根目录下使用

    {
    “query”:{
    “term”:{“title”:“kitchen3”}
    },
    “filter”:{
    “term”:{“price”:1000}
    }
    }

区别

位置

区别

备注

bool下

在filter query先执行filter,不计算score,再执行query。

如 果还要在搜索结果中执行aggregation操作,filter query聚合的是filter和query之后的结果,而filter聚合的是query的结果

根目录下

根目录中的filter在query后执行。

如果还要在搜索结果中执行aggregation操作,filter query聚合的是filter和query之后的结果,而filter聚合的是query的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值