教程 elasticsearch tutorial

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 查询的结合使用,可以满足绝大多数复杂搜索场景,实现精确且灵活的筛选条件。