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 列表合并成一个大的列表。

输出结果:

相关推荐
PC2005-cloud18 小时前
Elasticsearch 学习笔记:集群实战(3 控制节点 + 3 数据节点部署与故障转移)
笔记·学习·elasticsearch
Devin~Y19 小时前
从内容社区到AI智能客服:Spring Boot + Spring Cloud + Spring AI 全栈实战面试拆解
java·spring boot·redis·elasticsearch·spring cloud·kafka·mybatis
凤山老林1 天前
复杂检索引擎落地:Spring Boot + Elasticsearch 数据同步与高阶查询实战
spring boot·后端·elasticsearch
Elastic 中国社区官方博客2 天前
你的 AI agent 不需要你的 API 密钥:使用 OAuth 2.1 对 Elasticsearch MCP 服务器进行身份验证
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索
互联网中的一颗神经元2 天前
ZZ — Git 速查表
大数据·git·elasticsearch
Elasticsearch2 天前
跳过有状态的 OTel Collector:Elasticsearch 9.5 原生存储两种指标时间类型
elasticsearch
C++、Java和Python的菜鸟2 天前
第2章 项目前置课-代码版本控制Git
大数据·elasticsearch·搜索引擎
Elasticsearch3 天前
什么是混合搜索?
elasticsearch
Elastic 中国社区官方博客3 天前
训练量仅占 0.35%,竞争力却达到 100%:jina-embeddings-v5-omni 背后的冻结塔架构
大数据·人工智能·elasticsearch·机器学习·重构·全文检索·jina
Elasticsearch3 天前
从点击流中提升搜索相关性:使用 Learn To Rank 和 OpenTelemetry 行为信号
elasticsearch