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

如何编写Elasticsearch DSL查询获取每个id对应的最新用户资料

Elasticsearch DSL 实现方案

场景1:查询单个指定ID的最新用户资料

这种场景性能最优的实现方式是直接过滤目标ID,按更新时间倒序后取第一条:

GET 你的索引名/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "id.keyword": "123"
          }
        }
      ]
    }
  },
  "sort": [
    {
      "lastProfileUpdateTime": {
        "order": "desc"
      }
    }
  ],
  "size": 1
}

注:如果你的id字段映射类型本身就是keyword,可直接写"id": "123",不需要加.keyword后缀。
查询返回的hits里的第一条数据就是所需的最新用户资料。

场景2:批量查询所有ID各自对应的最新用户资料

如果需要一次性拿到所有id的最新记录,可以用聚合实现:

GET 你的索引名/_search
{
  "size": 0,
  "aggs": {
    "group_by_id": {
      "terms": {
        "field": "id.keyword",
        "size": 1000
      },
      "aggs": {
        "latest_profile": {
          "top_hits": {
            "size": 1,
            "sort": [
              {
                "lastProfileUpdateTime": {
                  "order": "desc"
                }
              }
            ]
          }
        }
      }
    }
  }
}

返回结果的aggregations节点下,每个分组的latest_profile下的hits就是对应id的最新资料。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:36:04