【问题标题】:SearchPhaseExecutionException[Failed to execute phase [query], all shards failed]SearchPhaseExecutionException[执行阶段[查询]失败,所有分片失败]
【发布时间】:2015-07-16 09:56:19
【问题描述】:

最近我们的服务器在没有正确关闭 Elastic Search / Kibana 的情况下重新启动。重新启动后,两个应用程序都在运行,但不再创建索引。我在调试模式下检查了 logstash 设置,它正在向 Elastic Search 发送数据。

现在我创建的所有窗口都报告此错误:

Oops! SearchPhaseExecutionException[Failed to execute phase [query], all shards failed]

我尝试重新启动 Elastic Search / Kibana,并清除了一些索引。我进行了很多搜索,但无法正确解决此问题。

如图所示,当前集群健康状态为红色。

任何关于如何排除故障的帮助都被赞成。谢谢

编辑:

[2015-05-06 00:00:01,561][WARN ][cluster.action.shard     ] [Indech] [logstash-2015.03.16][1] sending failed shard for [logstash-2015.03.16][1], node[fdSgUPDbQB2B3NQqX7MdMQ], [P], s[INITIALIZING], indexUUID [aBcfbqnNR4-AGEdIR8dVdg], reason [Failed to start shard, message [IndexShardGatewayRecoveryException[[logstash-2015.03.16][1] failed to recover shard]; nested: ElasticsearchIllegalArgumentException[No version type match [101]]; ]]
[2015-05-06 00:00:01,561][WARN ][cluster.action.shard     ] [Indech] [logstash-2015.03.16][1] received shard failed for [logstash-2015.03.16][1], node[fdSgUPDbQB2B3NQqX7MdMQ], [P], s[INITIALIZING], indexUUID [aBcfbqnNR4-AGEdIR8dVdg], reason [Failed to start shard, message [IndexShardGatewayRecoveryException[[logstash-2015.03.16][1] failed to recover shard]; nested: ElasticsearchIllegalArgumentException[No version type match [101]]; ]]
[2015-05-06 00:00:02,591][WARN ][indices.cluster          ] [Indech] [logstash-2015.04.21][4] failed to start shard
org.elasticsearch.index.gateway.IndexShardGatewayRecoveryException: [logstash-2015.04.21][4] failed to recover shard
    at org.elasticsearch.index.gateway.local.LocalIndexShardGateway.recover(LocalIndexShardGateway.java:269)
    at org.elasticsearch.index.gateway.IndexShardGatewayService$1.run(IndexShardGatewayService.java:132)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: org.elasticsearch.ElasticsearchIllegalArgumentException: No version type match [52]
    at org.elasticsearch.index.VersionType.fromValue(VersionType.java:307)
    at org.elasticsearch.index.translog.Translog$Create.readFrom(Translog.java:364)
    at org.elasticsearch.index.translog.TranslogStreams.readTranslogOperation(TranslogStreams.java:52)
    at org.elasticsearch.index.gateway.local.LocalIndexShardGateway.recover(LocalIndexShardGateway.java:241)

我在日志中关心的是这个:

[2015-05-06 15:13:48,059][DEBUG][action.search.type       ] All shards failed for phase: [query]



{
  "cluster_name" : "elasticsearch",
  "status" : "red",
  "timed_out" : false,
  "number_of_nodes" : 8,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 120,
  "active_shards" : 120,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 310
}

【问题讨论】:

    标签: elasticsearch logstash windows-server-2012 kibana


    【解决方案1】:

    您有许多损坏的 translog 文件,需要删除。您可以在 data/{clustername}/nodes/0/indices/logstash-2015.04.21/4/translog 中找到它,在 data/{clustername}/nodes/0/indices/logstash-2015.03.16/1/translog 中找到另一个。也许还有其他人,但这就是我从你提供的 sn-p 中可以看出的。当然,会丢失 translog 文件中的内容。

    如果索引不再有索引文件(只有_state 文件夹存在于data/{clustername}/nodes/0/indices/[index_name] 下),这意味着该索引中不再有数据,此时您可以删除该索引。如果您仍然需要它,您需要重新索引该数据。如果您决定删除索引,则需要关闭节点并删除data/{clustername}/nodes/0/indices 下的索引文件夹,这些文件夹与您提到的类似(为空,仅包含_state 文件夹)。

    【讨论】:

    • 如果你碰巧知道如何进入 Mac 上的 data/{clustername} 文件夹?
    • 就我而言,我的磁盘已被 100% 占用。我增加了音量并重新启动了实例。成功了!
    【解决方案2】:
    1. 尝试删除您的索引并重新创建它。有时会有所帮助。

    2. 或者您可能正尝试在同一查询中查询 intstring 字段。

    【讨论】:

    • 我不得不删除索引并重建 4 次,直到它起作用
    • 谢谢,我在字符串字段中搜索术语查询中的 int 字段,修复了错误
    猜你喜欢
    • 2022-06-24
    • 1970-01-01
    • 2021-09-23
    • 2023-03-18
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多