Elasticsearch DSL 查询全解析。

Elasticsearch DSL 篇

Elasticsearch 的 Domain Specific Language (DSL) 是一种基于 JSON 的查询语言,用于构建复杂的搜索请求。DSL 提供了丰富的查询和聚合功能,能够满足各种搜索需求。以下将详细介绍 DSL 的核心用法,包括查询、过滤、排序和聚合等操作,并提供代码示例。

基本查询结构

Elasticsearch 的 DSL 查询通常由一个 query 字段开始,用于定义搜索条件。以下是一个最简单的查询示例:

{
  "query": {
    "match_all": {}
  }
}

这个查询会匹配所有文档。如果需要更复杂的条件,可以使用 bool 查询组合多个子查询。

布尔查询

bool 查询允许通过逻辑运算符组合多个查询条件。常用的逻辑运算符包括 mustshouldmust_notfilter

{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "elasticsearch" } }
      ],
      "filter": [
        { "range": { "date": { "gte": "2023-01-01" } } }
      ]
    }
  }
}

这个查询要求文档的 title 字段必须包含 "elasticsearch",并且 date 字段必须大于或等于 2023 年 1 月 1 日。

全文检索查询

全文检索是 Elasticsearch 的核心功能之一。match 查询是最常用的全文检索查询,支持分词和模糊匹配。

{
  "query": {
    "match": {
      "content": "quick brown fox"
    }
  }
}

如果需要更精确的控制,可以使用 match_phrase 查询,确保词语按照指定的顺序出现。

{
  "query": {
    "match_phrase": {
      "content": "quick brown fox"
    }
  }
}
范围查询

range 查询用于匹配字段值在指定范围内的文档。支持的操作

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值