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

使用AWS Glue向OpenSearch迁移时如何自定义文档_id?

实现AWS Glue向OpenSearch写入自定义_id的方案

可以实现,报错原因是_id是OpenSearch的元数据字段,不能作为文档内容的一部分传入,必须通过写入参数指定映射字段。具体操作如下:

核心思路

不要将自定义唯一字段重命名为_id,而是通过Glue的OpenSearch写入参数,指定现有字段作为文档的_id。

具体实现步骤

1. 确保数据包含全局唯一标识符字段

确认你的DynamoDB数据经过转换后,保留了全局唯一标识字段(比如命名为resource_id、uuid等)。

2. 在Glue作业中配置写入参数

方式一:Spark代码作业(Python/Scala)

在写入OpenSearch的代码段中,添加es.mapping.id选项,值为你的唯一字段名:

# 假设已完成数据转换,得到包含唯一字段的DataFrame
df.write.format("opensearch") \
  .option("es.nodes", "your-opensearch-domain-endpoint") \
  .option("es.port", "443") \
  .option("es.net.ssl", "true") \
  .option("es.resource", "your-target-index/_doc") \
  .option("es.mapping.id", "resource_id")  # 指定唯一字段作为_id
  .mode("append") \
  .save()

方式二:Glue Studio可视化作业

  • 选中OpenSearch目标节点,进入配置界面
  • 找到「高级选项」下的「额外Spark配置」
  • 添加一行配置:es.mapping.id=resource_id(替换为你的唯一字段名称)

3. 验证结果

运行作业后,OpenSearch会自动将你指定的字段值作为文档的_id,不再自动生成随机ID,同时避免元数据字段的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:52:31