You need to enable JavaScript to run this app. 如何使用AWS Elasticsearch Aggregation按规则筛选交易状态记录
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS Elasticsearch Aggregation按规则筛选交易状态记录

AWS Elasticsearch 按规则筛选交易记录实现方案

核心思路

要实现需求只需利用聚合的分组加组内排序取首条能力即可:

  • 先按Transaction Id将同一交易的所有记录分到同一个桶
  • 组内给不同状态设置优先级权重:success优先级高于pending
  • 每个组只取优先级最高的1条记录,即可得到符合要求的结果

具体查询DSL

{
  "size": 0,
  "aggs": {
    "group_by_transaction_id": {
      "terms": {
        "field": "Transaction Id.keyword",
        "size": 10000 // 可根据实际交易总笔数调整,保证覆盖所有交易即可
      },
      "aggs": {
        "get_valid_record": {
          "top_hits": {
            "sort": [
              {
                "_script": {
                  "type": "number",
                  "script": {
                    "lang": "painless",
                    "source": "if(doc['Status.keyword'].value == 'success') return 2; else if(doc['Status.keyword'].value == 'pending') return 1; return 0;"
                  },
                  "order": "desc"
                }
              }
            ],
            "size": 1
          }
        }
      }
    }
  }
}

注意:如果你的Transaction Id和Status字段本身就是keyword类型,不需要加.keyword后缀,直接写字段名即可。

结果提取

查询返回后,遍历aggregations.group_by_transaction_id.buckets下的每个桶,取get_valid_record.hits.hits[0]的内容就是对应交易符合规则的记录,最终整理结果和预期完全一致:

序号Transaction IdAmountStatus
2AA001100success
3AA002200pending

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 00:12:00