Skip to content
章节导航

Query DSL 布尔-范围和分页-排序

range:范围查询

用于根据范围条件进行查询,例如指定价格在一定区间内的商品,范围符号

符号描述
gte大于等于
gt大于
lte小于等于
lt小于
shell
GET /shuofeng_shop_v1/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 5,
        "lte": 100
      }
    }
  }
}

分页查询

  • 可以使用 from 和 size 参数进行分页查询
  • 可以指定要跳过的文档数量(from)和需要返回的文档数量(size)
shell
GET /shuofeng_shop_v1/_search
{
  "size": 10,
  "from": 0,
  "query": {
    "match_all": {}
  }
}

查询结果排序

sort 字段可以进行排序 desc 和 asc

shell
GET /shuofeng_shop_v1/_search
{
  "size": 10,
  "from": 0,
  "sort": [
    {
      "price": "asc"
    }
  ],
  "query": {
    "match_all": {}
  }
}

bool 查询

通过组合多个查询条件,使用布尔逻辑(与、或、非)进行复杂的查询操作,语法格式如下:

  • "must"关键字用于指定必须匹配的条件,即所有条件都必须满足
  • "must_not"关键字指定必须不匹配的条件,即所有条件都不能满足
  • "should"关键字指定可选的匹配条件,即至少满足一个条件
shell
{
  "query": {
    "bool": {
      "must": [
        // 必须匹配的条件
      ],
      "must_not": [
        // 必须不匹配的条件
      ],
      "should": [
        // 可选匹配的条件
      ],
      "filter": [
        // 过滤条件
      ]
    }
  }
}

案例实战

shell
GET /shuofeng_shop_v1/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "summary": "Cloud" }},
        { "range": { "price": { "gte": 5 }}}
      ]
    }
  }
}