es中filtered和filter的区别
发布日期:2021-07-28 08:29:44 浏览次数:1 分类:技术文章

本文共 1054 字,大约阅读时间需要 3 分钟。

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的结果
————————————————
版权声明:本文为CSDN博主「瘦子没有夏天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39723544/article/details/103676958

转载地址:https://blog.csdn.net/sinat_17775997/article/details/115874148 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:React Native 启动速度优化——Native 篇(内含源码分析)
下一篇:Elasticsearch Search API

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月21日 06时17分13秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章