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

Elasticsearch多term查询下获取每个含throughput字段接口的最新文档

你现有DSL的缺陷是没有按接口名称分组,只会返回所有匹配文档中最新的1条,无法实现每个接口各返回1条最新数据的需求。修正后的实现如下:

GET /interface-2021.11/_search
{
  "size": 0,
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "interface_name.keyword": "Gi0/0/2 on (EXT-01)"
          }
        },
        {
          "term": {
            "interface_name.keyword": "Gi0/0/1 on (EXT-02)"
          }
        },
        {
          "term": {
            "interface_name.keyword": "Ethernet1/61 on (DC-01)"
          }
        },
        {
          "term": {
            "interface_name.keyword": "Ethernet1/17 on (DC-02)"
          }
        }
      ],
      "minimum_should_match": 1,
      "filter": [
        {
          "exists": {
            "field": "throughput"
          }
        }
      ]
    }
  },
  "aggs": {
    "group_by_interface": {
      "terms": {
        "field": "interface_name.keyword",
        "size": 10
      },
      "aggs": {
        "latest_doc": {
          "top_hits": {
            "size": 1,
            "sort": [
              {
                "@timestamp": {
                  "order": "desc"
                }
              }
            ]
          }
        }
      }
    }
  }
}

核心改动说明:

  • 新增size: 0配置,不需要返回原始命中的全量文档,仅返回聚合结果即可,降低数据传输量
  • 新增第一层group_by_interfaceterms聚合,按接口名称分组,确保每个指定接口单独统计
  • 分组内嵌套latest_doctop_hits聚合,配置size:1仅返回每个分组中按时间倒序排序后的第一条文档,也就是对应接口的最新数据

查询返回后,你可以在aggregations.group_by_interface.buckets下拿到每个接口的分组结果,每个分组的latest_doc.hits.hits[0]就是对应接口的最新文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:07