ElasticSearch(八)【过滤查询】

八、过滤查询


上一篇文章ElasticSearch - 扩展词、停用词配置

过滤查询,其实准确来说,ES中的查询操作分为2种:查询(query) 过滤(filter)。查询即是之前提到的query查询,它 (查询)默认会计算每个返回文档的得分,然后根据得分排序。而过滤(filter)只会筛选出符合的文档,并不计算得分,而且它可以缓存文档。所以,单从性能考虑,过滤比查询更快。 换句话说,过滤适合在大范围筛选数据,而查询则适合精确匹配数据。一般应用时, 应先使用过滤操作过滤数据,然后使用查询匹配数据

在这里插入图片描述

注意

  • 在执行 filter 和 query 时,先执行 filter 在执行 query
  • Elasticsearch 会自动缓存经常使用的过滤器,以加快性能

常见过滤类型

  • term:单个关键词
  • terms:多个关键词
  • range:范围
  • exists:存在
  • ids:多个id

term类型

GET /product/_search
{
  "query": {
    "bool": {
      "must": [
        {"term": {
          "description": {
            "value": "blog"
          }
        }}
      ],
      "filter": [
        {"term": 
          {"description": "blog"}
        }
      ]
    }
  }
}

terms类型

GET /product/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_all": {}
        }
      ],
      "filter": [
        {"terms": {
          "description": [
            "blog",
            "vinjcent"
          ]
        }
        }
      ]
    }
  }
}

range类型

GET /product/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_all": {}
        }
      ],
      "filter": [
        {"range": {
          "price": {
            "gte": 0,
            "lte": 20
          }
        }}
      ]
    }
  }
}

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

GET /product/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_all": {}
        }
      ],
      "filter": [
        {
          "exists": {
            # 存在某个字段
            "field": "aaa"
          }
        }
      ]
    }
  }
}

ids类型,过滤含有指定字段的索引记录

GET /product/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "description": {
              "value": "blog"
            }
          }
        }
      ],
      "filter": [
        {
          "ids": {
            "values": [
              "1","2"
            ]
          }
        }
      ]
    }
  }
}

下一篇文章ElasticSearch - SpringBoot整合

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naijia_OvO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值