我正在进行弹性搜索,它工作得很好。今天我刚刚重启了我的远程服务器(Ubuntu)。现在我在索引中搜索,它给了我这个错误。
{"error":"SearchPhaseExecutionException[Failed to execute phase [query_fetch], all shards failed]","status":503}
我还检查了健康状况。状态为红色。谁能告诉我这是什么问题。
答案 0 :(得分:21)
重启后可能会有一些碎片无法恢复,导致群集保持红色
如果你点击:
http://<yourhost>:9200/_cluster/health/?level=shards
您可以查找红色碎片。
我在重新启动时遇到问题,其中分片最终处于不可恢复状态。我的解决方案是完全删除该索引。这对每个人来说都不是理想的解决方案。
使用以下插件可视化此类问题也很不错:
Elasticsearch Head
答案 1 :(得分:5)
如果出于某种原因运行单个节点群集,则可能只需要执行以下操作:
curl -XPUT -H 'Content-Type: application/json' 'localhost:9200/_settings' -d '
{
"index" : {
"number_of_replicas" : 0
}
}'
答案 2 :(得分:2)
首先,所有分片失败异常并不像听起来那么戏剧化,这意味着分片在服务请求(查询或索引)时失败,可能有多种原因,例如
为了解决问题,您需要将其过滤到上述类别之一,并根据需要进行适当的修复。
问题中提到的,显然在第一个桶中,因为集群健康状况为 RED,意味着缺少一个或多个主分片,my this SO answer 将帮助您修复 RED 集群问题,这将修复所有在这种情况下分片异常。
答案 3 :(得分:1)
如果在正在运行的系统中遇到这种明显的索引损坏,您可以通过删除名为segments.gen的所有文件来解决此问题。它仅供参考,如果没有它,Lucene可以正确恢复。
答案 4 :(得分:0)
这项工作对我而言。
elasticsearch / config / elasticsearch.yml需要添加此行。
script.inline: on
script.indexed: on