Elasticsearch文档_id以数组方式返回

背景需求是只需要文档的_id字段,并且_id组装成一个数组。

在搜索请求中使用 script_fields 来整理 _id 为数组输出:

json 复制代码
POST goods_info/_search?size=0
{
  "query": {
    "term": {
      "brand": {
        "value": "MGC"
      }
    }
  },
  "_source":false,
 "aggs": {
    "ids_as_array": {
      "scripted_metric": {
        "init_script": "state.ids = []",
        "map_script": "state.ids.add(doc['_id'].value)",
        "combine_script": "return state.ids",
        "reduce_script": "def ids = []; for (s in states) { ids.addAll(s) } return ids"
      }
    }
  }
  
}

代码说明:

  1. size: 0:表示不需要实际返回任何文档,因为我们只关心聚合结果。
  2. scripted_metric:一个聚合类型,允许在多个阶段中使用脚本来聚合数据。
  3. init_script:在每个分片上初始化状态。在这里,我们初始化了一个空的列表 ids。
  4. map_script:在每个文档上执行。这里,我们将文档的 _id 添加到 ids 列表中。
  5. combine_script:在每个分片上执行,用于合并每个分片的结果。在这里,我们直接返回 ids 列表。
  6. reduce_script:在所有分片结果上执行,用于合并所有分片的结果。在这里,我们将所有分片的 ids 列表合并成一个大的列表。

输出结果:

相关推荐
不做无法实现的梦~10 小时前
git指令速查
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客14 小时前
Elastic 线下 Meetup 将于 2026 年 7 月 26 号下午在深圳举行
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Elastic 中国社区官方博客15 小时前
Elasticsearch 如何通过 synthetic _id 和 Bloom filters 将时序存储降低 34%
大数据·数据库·elasticsearch·搜索引擎·serverless·全文检索·时序数据库
AskHarries17 小时前
OpenClaw Skill 从哪里找
大数据·elasticsearch·搜索引擎
xzzd_jokelin20 小时前
AI编程,几个核心工件写成了可直接使用的文件
大数据·人工智能·elasticsearch·ai编程·codex
明夜之约21 小时前
Elasticsearch 深度解析:从倒排索引原理到亿级数据生产实战
大数据·elasticsearch·搜索引擎
garmin Chen21 小时前
Elasticsearch(1):Elasticsearch核心原理与基础操作总结
java·大数据·笔记·elasticsearch·搜索引擎·全文检索
GISer_Jing1 天前
Claude Code 技术深度解析:一个活在终端里的 AI 编程助手
人工智能·elasticsearch·前端框架
西敏寺的乐章1 天前
01-倒排索引原理-搜索引擎为什么能秒搜
java·elasticsearch·搜索引擎
Ws_2 天前
Git + Gerrit 第四课:合并冲突解决
大数据·elasticsearch·搜索引擎