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

如何在Elasticsearch的sum聚合中跳过指定值-99999999999999

Elasticsearch聚合排除特定值解决方案

完全可以实现这个需求,给你两种常用的解决方法:

方法一:使用过滤聚合先排除目标文档

先通过filter聚合筛选掉PriceSavings等于-99999999999999的文档,再对剩余文档做sum计算:

"aggs": {
    "filtered_savings": {
        "filter": {
            "bool": {
                "must_not": [
                    {"term": {"PriceSavings": -99999999999999}}
                ]
            }
        },
        "aggs": {
            "sum_savings": {
                "sum": {
                    "field": "PriceSavings"
                }
            }
        }
    }
}

方法二:在sum聚合中用脚本跳过特定值

直接在sum的脚本逻辑里判断,遇到目标值时返回0(不参与求和),否则返回原字段值:

"aggs": {
    "sum_savings": {
        "sum": {
            "script": {
                "source": "doc['PriceSavings'].value == -99999999999999 ? 0 : doc['PriceSavings'].value"
            }
        }
    }
}

两种方法都能满足需求,过滤聚合的逻辑更直观,脚本方式则更简洁。如果PriceSavings是数值类型,term查询可以精准匹配目标值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:45:33