gpt4 book ai didi

Elasticsearch 别名有多个写入索引(不是任何其他问题的副本)

转载 作者:行者123 更新时间:2023-12-05 04:46:14 25 4
gpt4 key购买 nike

我有一个 elasticsearch 集群设置,在 k8s 上有一个 statefulset 用于 elasticseach 主节点(其中 3 个)和另一个 statefulset 用于 elasticsearch 数据节点(其中 15 个)。

在分片重新分配期间,由于一些数据节点达到了它们的容量,我们现在在数据节点上遇到了一个错误(实际上是在其中一些节点上),如下所示:

线程[main]中未捕获的异常org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: alias [alias-id_100536] 有多个写入索引 [index-abc ,index-def]

我们之前也遇到过这个问题,对我们有用的解决方案是通过 _cat/indices/index-abc api 和 bash 找到索引的散列到数据节点的 vm 上并删除整个目录使用哈希值,一旦数据节点启动,索引将再次达到所需的复制计数,因此我们没有数据丢失。但是,现在当我们尝试在具有写入状态的索引上使用 _cat/indices api 时,我们看到主节点说没有具有该名称的索引。在错误中抛出的 2 个索引中,我们只能找到其中一个在主节点上的索引。从 _cat/indices api 中找到哈希值后,我们可以尝试在数据节点上将它们一一删除,但是,我想知道对此理想的恢复方法是什么?

Elasticsearch 版本:6.7.2

谢谢

最佳答案

我能够解决这个问题。

我们最终编写了一个脚本,列出了 elasticsearch 数据节点索引路径的目录。

这样我们就能够获得该数据节点上所有 uuid 的列表。接下来,我们在主节点上运行 _cat/indices?format=json api 调用。我们从这个 api 收集了 uuid,并做了一个 set() - set(<_cat/indices-uuid>)。

这为我们提供了所有被视为悬空的索引的列表。我们使用 rm -rf 命令手动删除了目录。这带来了节点。

关于Elasticsearch 别名有多个写入索引(不是任何其他问题的副本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68903094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com