zoukankan      html  css  js  c++  java
  • elasticsearch之布尔查询

    前言

    布尔查询是最常用的组合查询,根据子查询的规则,只有文档满足所有子查询条件时,elasticsearch 引擎才将结果返回。布尔查询支持的子查询条件共4种

     must  (and)

    should (or)

    must_not (not)

    filter

    1.must

    需求: 查询 from 为 gu  并且 age  为 30  的数据

    GET zhifou/doc/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "from": "gu"
              }
            },
            {
              "match": {
                "age": 30
              }
            }
          ]
        }
      }
    }

    2.should

    需求: 查询只要时 from 为 gu   或者 tags 为 闭月的数据

    GET zhifou/doc/_search
    {
      "query": {
        "bool": {
          "should": [
            {
              "match": {
                "from": "gu"
              }
            },
            {
              "match": {
                "tags": "闭月"
              }
            }
          ]
        }
      }
    }

    3.must_not

    需求:查询 from 既不是 gu  并且 tags 也不是 可爱  还有 age不是18的数据

    GET zhifou/doc/_search
    {
      "query": {
        "bool": {
          "must_not": [
            {
              "match": {
                "from": "gu"
              }
            },
            {
              "match": {
                "tags": "可爱"
              }
            },
            {
              "match": {
                "age": 18
              }
            }
          ]
        }
      }
    }

    4.filter

    需求: 查询 from 为 gu, age 大于 25 的数据 

    GET zhifou/doc/_search
    {
      "query": {
        "bool": {
          "must": [    
            {
              "match": {
                "from": "gu"
              }
            }
          ],
          "filter": {          #此时的 filter 不在 must 列表中
            "range": {
              "age": {
                "gt": 25        
              }
            }
          }
        }
      }
    }

    注意:  这里 bool 下面为什么不用 should 而用  must

    首先 在查询过程中  优先经过 filter 过滤,

    然后  过滤出来的结果 再去匹配  must  或 should 中的     此时 should 是或 因此 会放行所有的结果

    小结:

    • must:与关系,相当于关系型数据库中的and
    • should:或关系,相当于关系型数据库中的or
    • must_not:非关系,相当于关系型数据库中的not
    • filter:过滤条件。
    • range:条件筛选范围。
    • gt:大于,相当于关系型数据库中的>
    • gte:大于等于,相当于关系型数据库中的>=
    • lt:小于,相当于关系型数据库中的<
    • lte:小于等于,相当于关系型数据库中的<=
  • 相关阅读:
    试题 历届试题 整数拼接(数位dp)
    试题 历届试题 波动数列(dp)
    序列化二叉树(模拟)
    对于maven中无法加载类路径下的配置文件
    [蓝桥杯][算法训练]文章翻转
    [蓝桥杯][算法训练] 无权最长链
    [蓝桥杯][基础训练]2n皇后问题
    蓝桥杯 基础练习——Huffuman树
    蓝桥杯 基础练习——高精度加法
    蓝桥杯 基础练习——阶乘计算
  • 原文地址:https://www.cnblogs.com/s686zhou/p/12253134.html
Copyright © 2011-2022 走看看