7.过滤查询

简介: 7.过滤查询

过滤查询

过滤查询<filter query>,其实准确来说,ES中的查询操作分为2种:查询(query)和过滤(filter)。

查询即是之前提到的query查询,它(查询)默认会计算每个返回文档的得分,然后根据得分排序。

而过滤(filter)只会筛选出符合的文档,并不计算得分,而且它可以缓存文档。所以,单从性能考虑,过滤比查询更快。

换句话说过滤适合在大范围筛选数据,而查询则适合精确匹配数据。 一般应用时,应先使用过滤操作过滤数据,然后使用查询匹配数据。 ![[Pasted image 20231103161104.png]] 通过过滤查询,排除不想要的数据,大大减少了查询的数据量。

使用

http

复制代码

GET /products/_search
{
  "query":{
    "bool": {
      "filter": [
        {...},   //查询条件
        {...}
      ]
    }
  }
}
  • 注意:
  • 在执行filter和query时,先执行filter在执行query
  • Elasticsearch会自动缓存经常使用的过滤器,以加快性能。

官网文档 Filter search results | Elasticsearch Guide [8.10] | Elastic

类型

常见过滤类型有: term . terms . ranage、exists、ids等filter。官网文档 Filter search results | Elasticsearch Guide [8.10] | Elastic

term、terms过滤

http

复制代码

GET /products/_search
{
  "query":{
    "bool": {
      "filter": [
        {"term": {"description": "很"}},
        {"term": {"description": "好"}},
        {"terms": {
          "description": [
            "很",
            "好"
          ]
        }}
      ]
    }
  }
}

range filter

http

复制代码

GET /products/_search
{
  "query":{
    "bool": {
      "filter": [
        {"range": {
          "price": {
            "gte": 1,
            "lte": 100
          }
        }}
      ]
    }
  }
}

exist filter

过滤存在指定字段,获取字段不为空的索引记录使用

http

复制代码

GET /products/_search
{
  "query":{
    "bool": {
      "filter": [
        {"exists": {
          "field": "id"
        }}
      ]
    }
    
  }
}

ids filter

http

复制代码

GET /products/_search
{
  "query":{
    "bool": {
      "filter": [
        {"ids": {
          "values": [
            "1"
          ]
        }}
      ]
    }
  }
}


相关文章
接口数据多条件搜索(模糊查询)
接口数据多条件搜索(模糊查询)
226 0
|
2月前
|
JavaScript 前端开发 Swift
查找和过滤4
查找和过滤4
35 2
|
5月前
|
索引
Elasticsearch 精确查询:术语查询、多术语查询、主键查询、范围查询、存在查询、前缀查询、正则查询与通配符查询
Elasticsearch 精确查询:术语查询、多术语查询、主键查询、范围查询、存在查询、前缀查询、正则查询与通配符查询
|
数据采集 数据可视化 数据挖掘
如何筛选和过滤ARWU网站上的大学排名数据
ARWU网站(ShanghaiRanking's Academic Ranking of World Universities)是一个公认的全球大学排名的先驱和最值得信赖的大学排名之一。它每年发布世界前1000所研究型大学的排名,基于透明的方法论和客观的第三方数据。ARWU网站上的大学排名数据可以为高考考生、专业选择、就业指导、行业发展等提供有价值的参考信息。
如何筛选和过滤ARWU网站上的大学排名数据
|
SQL 数据库
SQL过滤与应用过滤
SQL过滤与应用过滤
73 0
关于 WhereElementIsNotElementType() 过滤的理解
关于 WhereElementIsNotElementType() 过滤的理解
关于 WhereElementIsNotElementType() 过滤的理解
odoo 为可编辑列表视图字段搜索添加查询过滤条件
odoo 为可编辑列表视图字段搜索添加查询过滤条件
205 0
|
Java
FilenameFilter 实现文件过滤
实现 FilenameFilter 接口的类的实例用于过滤文件名。这些实例被用来过滤类 File 的 list 方法中的目录列表。FilenameFilter 接口很简单,只有一个 accpet 方法
112 0
|
关系型数据库 MySQL
ES复杂查询-结果过滤, 排序,分页
ES复杂查询-结果过滤, 排序,分页