elasticsearch 所有碎片均失败

9cbw7uwe  于 2023-01-25  发布在  ElasticSearch
关注(0)|答案(4)|浏览(222)

我正在做ElasticSearch,它工作得很完美。今天我刚刚重新启动了我的远程服务器(Ubuntu)。现在我在我的索引中搜索,它给了我这个错误。

{"error":"SearchPhaseExecutionException[Failed to execute phase [query_fetch], all shards failed]","status":503}

我也检查了健康状况。状态是红色的。谁能告诉我出了什么问题。

zu0ti5jz

zu0ti5jz1#

重新启动时可能未恢复某些碎片,导致群集保持红色。
如果点击:
http://<yourhost>:9200/_cluster/health/?level=shards您可以查找红色碎片。
我曾经遇到过重启时碎片处于不可恢复状态的问题。我的解决方案是简单地完全删除该索引。这并不是一个适合所有人的理想解决方案。
它也是很好的可视化问题,像这样的插件:
Elasticsearch Head

aor9mmx1

aor9mmx12#

如果您出于某种原因运行单节点集群,您可能只需要避免副本,如下所示:

curl -XPUT -H 'Content-Type: application/json' 'localhost:9200/_settings' -d '
{
    "index" : {
        "number_of_replicas" : 0
    }
}'

执行此操作将强制使用不带复本的es

vddsk6oq

vddsk6oq3#

首先,所有碎片失败的异常并不像听起来那么严重,它意味着碎片在服务请求(查询或索引)时失败,可能有多种原因,例如
1.碎片实际上处于不可恢复状态,如果您的集群和索引状态为黄色和红色,则这是原因之一。
1.由于后台正在进行一些碎片恢复,碎片没有响应。
1.由于查询语法错误,ES在所有分片中的响应都失败了。
为了修复此问题,您需要将其过滤到上述类别之一中,并根据该类别进行相应的修复。
问题中提到的问题显然处于第一个桶中,因为群集运行状况为红色,这意味着缺少一个或多个主碎片,my this SO answer将帮助您修复红色群集问题,这将修复本例中的所有碎片异常。

w6mmgewl

w6mmgewl4#

如果您在运行的系统中遇到这种明显的索引损坏,您可以通过删除所有名为segments.gen的文件来解决它。这只是建议性的,Lucene可以在没有它的情况下正确恢复。
ElasticSearch Blog开始

相关问题