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

Amazon OpenSearch Service:expected total copies错误修复求助

修复Amazon OpenSearch索引创建时的副本数验证错误

你遇到的错误信息:

[illegal_argument_exception] Validation Failed: 1: expected total copies needs to be a multiple of total awareness attributes [3];

错误原因

你的Amazon OpenSearch域开启了分片感知(shard awareness),且当前感知属性数量为3,但要创建的索引的分片副本总数(主分片数+副本分片数)不是3的整数倍。OpenSearch要求开启分片感知时,分片副本总数必须和感知属性数量成倍数关系,才能保证分片在各个感知节点组(比如多AZ部署的不同可用区)之间均匀分布。

修复方案

方案1:自定义索引的分片与副本配置

创建索引时指定合适的分片和副本数,确保两者之和是3的倍数。比如主分片数设为1、副本数设为2(1+2=3),或者主分片数2、副本数1(2+1=3)等。

用LangChain的OpenSearchVectorStore时,可通过indexSettings参数添加自定义配置:

import { Client } from "@opensearch-project/opensearch";
import { Document } from "langchain/document";
import { OpenAIEmbeddings } from "langchain/embeddings/openai";
import { OpenSearchVectorStore } from "langchain/vectorstores/opensearch";

const client = new Client({
  nodes: [process.env.OPENSEARCH_URL ?? "http://127.0.0.1:9200"],
  auth: {
    username: process.env.OPENSEARCH_USERNAME ?? "",
    password: process.env.OPENSEARCH_PASSWORD ?? "",
  },
});

const embedding = new OpenAIEmbeddings();
await OpenSearchVectorStore.fromDocuments(docs, embedding, {
    client,
    indexName: process.env.OPENSEARCH_INDEX,
    indexSettings: {
        "number_of_shards": 1,
        "number_of_replicas": 2 // 总数3,匹配感知属性数量
    }
});

方案2:调整OpenSearch域的分片感知配置

如果不需要分片感知功能,或者想调整感知属性数量:

  • 登录AWS控制台,进入Amazon OpenSearch服务页面
  • 找到目标域,进入配置 > 集群配置
  • 关闭分片感知选项,或者修改感知属性的数量(比如改成1或2,确保后续索引的副本总数能匹配)
  • 保存配置,等待域更新完成

方案3:修改默认索引模板

如果希望所有新创建的索引都自动满足要求,可以修改OpenSearch的默认索引模板,设置默认的number_of_shards和number_of_replicas,使两者之和为3的倍数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:42:50