You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch等价SQL:带日期过滤获取stocks索引首尾文档close值

Elasticsearch stocks索引双close值查询实现

需求中的两个取值逻辑可以通过单条聚合查询一次性实现,和给出的SQL逻辑完全等价,不需要拆分多次请求。

查询DSL

直接执行以下请求即可:

GET /stocks/_search
{
  "size": 0,
  "aggs": {
    "last_close": {
      "filter": {
        "range": {
          "date": {
            "gte": "2022-06-01"
          }
        }
      },
      "aggs": {
        "target_doc": {
          "top_hits": {
            "size": 1,
            "sort": [
              {
                "date": "desc"
              }
            ],
            "_source": ["close"]
          }
        }
      }
    },
    "earliest_close": {
      "top_hits": {
        "size": 1,
        "sort": [
          {
            "date": "asc"
          }
        ],
        "_source": ["close"]
      }
    }
  }
}

结果提取

返回结果中两个目标值的提取路径:

  • 指定2022-06-01之后最新文档的close值:aggregations.last_close.target_doc.hits.hits[0]._source.close
  • 全量数据按日期正序第一条的close值:aggregations.earliest_close.hits.hits[0]._source.close

优化说明

  • 该查询设置size:0,不会返回无关的原始文档列表,只返回聚合计算结果,性能远高于两次单独查询
  • _source配置仅返回需要的close字段,减少不必要的网络传输开销
  • 日期条件直接写2022-06-01即可,Elasticsearch会根据索引中date字段的格式自动匹配为2022-06-01 00:00:00,不需要手动补全时间部分

内容的提问来源于stack exchange,提问作者Elunemoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:30:49