【问题标题】:All shards failed所有分片失败
【发布时间】:2014-01-16 09:07:13
【问题描述】:

我正在研究弹性搜索,它运行良好。今天我刚刚重新启动了我的远程服务器(Ubuntu)。现在我在我的索引中搜索,它给了我这个错误。

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

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

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    可能在您重新启动时某些分片没有恢复,导致集群保持红色。
    如果您点击:
    http://<yourhost>:9200/_cluster/health/?level=shards,您可以寻找红色碎片。

    我在重新启动时遇到了分片最终处于不可恢复状态的问题。我的解决方案是完全删除该索引。这不是每个人的理想解决方案。

    使用如下插件可视化此类问题也很不错:
    Elasticsearch Head

    【讨论】:

    • 嗨@mconlin,您如何确定在这种情况下要删除哪个索引?
    • 使用 head 你会在最后一行看到灰色的未恢复碎片。
    • 如果你在docker上,尝试强制重新创建elasticsearch和kibana
    • 注意,大量的分片会需要很长时间来初始化;尝试减少数字,请参阅:elastic.co/blog/…
    【解决方案2】:

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

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

    这样做你会强制使用没有副本的 es

    【讨论】:

    • 这会做什么?? @paulo,请解释一下
    • 告诉 ES 你所有的索引都在一台机器上:没有副本。
    • 我安装了一台机器和一个 elasticsearch 节点,没有副本,这个命令对我有用。
    【解决方案3】:

    首先,所有分片失败异常并不像听起来那么严重,这意味着分片在服务请求(查询或索引)时失败,可能有多种原因,比如

    1. 分片实际上处于不可恢复状态,如果您的集群和索引状态为黄色和红色,那么这就是原因之一。
    2. 由于后台发生了一些分片恢复,分片没有响应。
    3. 由于查询语法错误,ES 在所有分片中都响应失败。

    为了解决此问题,您需要将其过滤到上述类别之一中,并根据需要进行适当的修复。

    问题中提到的,显然在第一个存储桶中,因为集群运行状况为 RED,表示缺少一个或多个主分片,my this SO answer 将帮助您修复 RED 集群问题,这将修复所有分片异常在这种情况下。

    【讨论】:

      【解决方案4】:

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

      来自ElasticSearch Blog

      【讨论】:

      • 当前链接正在重定向到 elastic.co 主页面。它不再显示博客条目。编辑已提交。
      猜你喜欢
      • 2015-07-16
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 2022-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 2015-04-05
      相关资源
      最近更新 更多