我正在做ElasticSearch,它工作得很完美。今天我刚刚重新启动了我的远程服务器(Ubuntu)。现在我在我的索引中搜索,它给了我这个错误。
{"error":"SearchPhaseExecutionException[Failed to execute phase [query_fetch], all shards failed]","status":503}
我也检查了健康状况。状态是红色的。谁能告诉我出了什么问题。
我正在做ElasticSearch,它工作得很完美。今天我刚刚重新启动了我的远程服务器(Ubuntu)。现在我在我的索引中搜索,它给了我这个错误。
{"error":"SearchPhaseExecutionException[Failed to execute phase [query_fetch], all shards failed]","status":503}
我也检查了健康状况。状态是红色的。谁能告诉我出了什么问题。
4条答案
按热度按时间zu0ti5jz1#
重新启动时可能未恢复某些碎片,导致群集保持红色。
如果点击:
http://<yourhost>:9200/_cluster/health/?level=shards
您可以查找红色碎片。我曾经遇到过重启时碎片处于不可恢复状态的问题。我的解决方案是简单地完全删除该索引。这并不是一个适合所有人的理想解决方案。
它也是很好的可视化问题,像这样的插件:
Elasticsearch Head
aor9mmx12#
如果您出于某种原因运行单节点集群,您可能只需要避免副本,如下所示:
执行此操作将强制使用不带复本的es
vddsk6oq3#
首先,所有碎片失败的异常并不像听起来那么严重,它意味着碎片在服务请求(查询或索引)时失败,可能有多种原因,例如
1.碎片实际上处于不可恢复状态,如果您的集群和索引状态为黄色和红色,则这是原因之一。
1.由于后台正在进行一些碎片恢复,碎片没有响应。
1.由于查询语法错误,ES在所有分片中的响应都失败了。
为了修复此问题,您需要将其过滤到上述类别之一中,并根据该类别进行相应的修复。
问题中提到的问题显然处于第一个桶中,因为群集运行状况为红色,这意味着缺少一个或多个主碎片,my this SO answer将帮助您修复红色群集问题,这将修复本例中的所有碎片异常。
w6mmgewl4#
如果您在运行的系统中遇到这种明显的索引损坏,您可以通过删除所有名为segments.gen的文件来解决它。这只是建议性的,Lucene可以在没有它的情况下正确恢复。
从ElasticSearch Blog开始