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

为何AWS OpenSearch Serverless调用_reindex API返回404错误?

AWS OpenSearch Serverless调用_reindex API返回404错误排查

问题场景

我拥有一个AWS OpenSearch Serverless集合,其中包含名为index1的索引且存有需重建的数据,通过OpenSearch Dashboard的Dev Tools操作该集合。按照官方文档步骤,先创建第二个索引再调用_reindex API重建数据:

PUT index2

POST _reindex
{
  "source": {
    "index": "index1"
  },
  "dest": {
    "index": "index2"
  }
}

创建index2的操作完全成功,但调用_reindex API时失败并返回404错误:

Request failed to get to the server (status code: 404)

执行创建操作后调用GET _mappings,能看到index1的映射(与现有数据对应)以及代表index2无映射的空对象。已确认域存在(其他操作均正常),且两个索引都存在,但不清楚404对应的未找到项是什么。

排查及解决方案

1. 检查数据访问权限配置

AWS OpenSearch Serverless的权限模型与托管式OpenSearch不同,需确保操作角色拥有aoss:Reindex权限,同时覆盖源索引、目标索引的读写权限。需在数据访问策略中添加如下规则:

{
  "Rules": [
    {
      "Resource": ["index/你的集合ID/index1", "index/你的集合ID/index2"],
      "Permission": ["aoss:ReadDocument", "aoss:WriteDocument"],
      "ResourceType": "index"
    },
    {
      "Resource": ["index/你的集合ID/_reindex"],
      "Permission": ["aoss:Reindex"],
      "ResourceType": "index"
    }
  ],
  "Principal": ["arn:aws:iam::你的账号ID:user/你的操作用户"],
  "Description": "允许index1与index2之间的重索引操作"
}

2. 确认请求路径包含集合ID

在OpenSearch Serverless中调用API时,必须在请求路径或参数中指定集合的唯一ID(非集合名称)。正确的_reindex请求格式应为:

POST /_reindex?collection=你的集合ID
{
  "source": {
    "index": "index1"
  },
  "dest": {
    "index": "index2"
  }
}

若Dashboard绑定了多个集合,需确认当前操作上下文是否指向目标集合。

3. 验证索引名称的准确性

确认index1和index2的名称完全匹配(OpenSearch索引名称区分大小写),避免因拼写、大小写差异导致的索引定位失败。

4. 检查服务版本兼容性

确认你的OpenSearch Serverless版本不低于支持_reindex API的最低版本(官方文档2.11版本已支持),低版本可能存在API兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:23:19