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

如何在Elasticsearch中针对特定用户实现多过滤器指标聚合?

实现特定用户的成功与错误事件计数

要获取Mary、Joe、Tina这几个特定用户的成功/错误事件计数,有两种常用实现方式,核心思路是结合用户筛选与事件类型聚合:

方式一:按用户分组,单独统计每个用户的事件数

这种方式会返回每个目标用户各自的成功、错误事件计数,适合需要拆分用户维度数据的场景:

aggs = {
    "users": {
        "terms": {
            "field": "username.keyword",  # 替换为你实际存储用户名的keyword类型字段
            "include": ["Mary", "Joe", "Tina"]  # 指定仅统计这三个用户
        },
        "aggs": {
            "event_stats": {
                "filters": {
                    "filters": {
                        "success_count": {"term": {"type": "Success"}},
                        "error_count": {"term": {"type": "Error"}}
                    }
                },
                "aggs": {
                    "count": {"value_count": {"field": "type"}}
                }
            }
        }
    }
}

关键说明:

  • 使用terms聚合的include参数精准锁定目标用户,必须确保用户名字段是keyword类型(如果是text类型,需用其对应的keyword子字段,避免分词导致匹配失效)
  • 在每个用户分组下嵌套原有的filters聚合,分别统计该用户的成功、错误事件数量

方式二:先全局筛选用户,再统计整体事件数

如果只需要这三个用户的整体成功/错误总数,可先通过查询条件过滤出目标用户数据,再做事件类型聚合:

# 先过滤出目标用户的所有数据
query = {
    "bool": {
        "filter": [
            {"terms": {"username.keyword": ["Mary", "Joe", "Tina"]}}
        ]
    }
}

# 再统计成功与错误事件数
aggs = {
    "event_stats": {
        "filters": {
            "filters": {
                "success_count": {"term": {"type": "Success"}},
                "error_count": {"term": {"type": "Error"}}
            }
        },
        "aggs": {
            "count": {"value_count": {"field": "type"}}
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:57:16