在基于集群别名的搜索角色上,搜索索引失败,出现"访问被禁止"错误
□ 说明
任何使用非空 " ClusterAlias " 和搜索角色范围到该前缀的部署——每个共享租借Collet Cloud集群——搜索索引工作在读取单一记录前会死:
运行时例外: 无法确定 < ClusterAlias X-data asst embeddings chunks 的活块目标
由: java.io. IO Exception: 禁止访问舰队报告清楚显示:`失败.0个失败记录'。
□ 根源
OpenSearchVector Service.resolveLiveChunkTargetStrict'用client.indices (.).存在Alias(a - > a.name (base))'探测出块的别名。 仅设置了名称 ' ,ExistAlias Request ' 建立HEAD / alias/{name}-路径中没有索引。 OpenSearch解决一个与QQall相对抗的无索引化名,因此需要整个集群的indices:admin/aliases/get'。 在QQ集群Alias-QQ 上只授予indices-all'的角色以403被否决.
403永远不能降解为 " 虚假 " : " 应急运输.Get HighlevelResponse " 提出 " 运输例外 " ( " 禁止进入 " ) " ( " IO例外 " ) " 地位403 " * " Boolean Endpoint " 状态 -- -- 布尔绘图 " 。
要求解决LiveChunkTarget ' 把它包起来并扔出,而With Embeddings.reCreateIndexes ' 称recreate ChunkIndex IfFullRun ' * before *Super.reCreateIndexes(实体)'——所以例外规定在启动时中止整个再索引。
由#30364所推出,两者均未指定已上演的块重生(之前的死代码在旗后,永远不可能是真的)并用这个严格的探测器来取而代之地取而代之地被吞没了的"GET / alias/{base}". 在承诺之前,同样的403在调试级别被捕获,解析度则通过索引范围“HEAD /{base} ”,该角色确实允许这样做。
□ 其他地方的同一类问题
OpenSearch IndexManager.getIndicesByAlias ' /ElastSearchIndexManager.getIndicesByAlias ' ——存在性的Alias ' 预先探测器和GetAlias request.of(g- > g.name(.)'均为集群形式。 403被吞噬了,所以它默默地返回一个空的索引集而不是失败.Search Repository.indexTemplatesMatch'读作om *`',它将每个共同租户的索引模板返回一个共享的集群。
□ 预期
每个请求都以组别名称开始命名一个具体的索引或图案;没有什么能解决所有问题。 除指数模式管理已经需要的外,不应要求整个组群的赠款。
□ 受影响
OpenSearch或Elasticsearch, “自然语言Search.semanticSearch Enabled: true', 非空" Croup Alias", 以及仅限于该前缀的搜索角色. 其搜索用户不受限制的部署不受影响,因此,这只出现在共享租赁集群上.
内容来源: open-metadata/OpenMetadata