# Range 与 Bool 查询

URL: https://caijiao.org/elasticsearch/02.basic/11.query-range-bool
Source: docs/elasticsearch/02.basic/11.query-range-bool.md
Description: 本章介绍 Elasticsearch 中 Range 查询和 Bool 查询的使用方法，帮助构建灵活的范围筛选和多条件复合查询。

Elasticsearch 查询 DSL 提供了丰富的查询类型，其中 Range 查询用于范围筛选，Bool 查询支持多条件逻辑组合，是构建复杂查询的基础。

## 1. Range 查询

用于筛选字段值在指定范围内的文档，支持数值、日期等类型。

### 示例：数值范围查询

```json
GET /my-index/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 10,
        "lte": 100
      }
    }
  }
}
````

### 常用参数

* `gte`：大于等于（greater than or equal）
* `lte`：小于等于（less than or equal）
* `gt`：大于（greater than）
* `lt`：小于（less than）

## 2. Bool 查询

用于组合多个查询条件，支持以下逻辑：

* `must`：必须匹配（AND）
* `should`：可选匹配（OR），至少一个匹配
* `must_not`：必须不匹配（NOT）
* `filter`：过滤条件，不影响评分

### 示例：复杂条件组合

```json
GET /my-index/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "category": "电子产品" } },
        { "range": { "price": { "lte": 500 } } }
      ],
      "must_not": [
        { "term": { "status": "下架" } }
      ]
    }
  }
}
```

---

Range 和 Bool 查询的结合使用，可以满足绝大多数复杂搜索场景，实现精确且灵活的筛选条件。
