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

如何在Elasticsearch中按ID条件统计指定日期范围内每月的数值总和?

解决方案

你需要在查询中新增query过滤节点限定generatorId的取值,同时调整聚合嵌套结构,即可获取特定ID对应文档的月度数值总和,修改后的查询如下:

query = {
    "size": 0,
    # 新增过滤条件块,限定generatorId取值
    "query": {
        "bool": {
            "filter": [
                {
                    "term": {
                        # 若generatorId为text类型,请替换为"generatorId.keyword"
                        "generatorId": "150"
                    }
                }
            ]
        }
    },
    "aggs" : {
        "articles_over_time" : {
            "date_histogram" : {
                "field" : "timestamp",
                "interval" : "month",
                # Elasticsearch 7.x及以上版本推荐替换为下行配置
                # "calendar_interval": "month"
            },
            # sum聚合作为date_histogram的子聚合,返回每个月的统计值
            "aggs": {
                "monthly_generated_total": {
                    "sum": {
                        "field": "generatedTotal"
                    }
                }
            }
        }
    }
}

注意事项

  • 字段适配:如果你的generatorId是text类型(ES动态映射字符串字段默认会同时生成text和keyword两个子类型),请将term查询的字段名修改为generatorId.keyword,避免分词导致匹配错误。
  • 返回结果说明:查询返回结果的articles_over_time数组中,每个时间桶的monthly_generated_total字段就是对应月份符合条件的generatedTotal总和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:45:02