web-dev-qa-db-ja.com

SearchPhaseExecutionException [フェーズ[クエリ]の実行に失敗しました。すべてのシャードが失敗しました]

最近、Elastic Search/Kibanaを正しくシャットダウンせずにサーバーを再起動しました。再起動後、両方のアプリケーションが実行されていましたが、インデックスはもう作成されていません。デバッグモードでlogstashのセットアップを確認し、Elastic Searchにデータを送信しています。

今、私の作成したすべてのウィンドウがこのエラーを報告します:

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

Elastic Search/Kibanaを再起動して、いくつかのインデックスをクリアしました。よく検索しましたが、これを正しくトラブルシューティングできませんでした。

図に示すように、現在のクラスターヘルスステータスは赤です。

Elastic Search Cluster Health

トラブルシューティングの方法に関するヘルプは、賛成です。ありがとうございました

編集:

[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
}
13
RayofCommand

破損したトランスログファイルが多数あるため、削除する必要があります。 data/{clustername}/nodes/0/indices/logstash-2015.04.21/4/translogdata/{clustername}/nodes/0/indices/logstash-2015.03.16/1/translogにあります。そしておそらく他の人かもしれませんが、これはあなたが提供したスニペットから私が言うことができるものです。もちろん、トランスログファイルの内容は失われます。

インデックスにインデックスファイルがもうない場合(_stateフォルダーのみがdata/{clustername}/nodes/0/indices/[index_name]の下に存在する)、これはそのインデックスにデータがなくなったことを意味し、この時点でインデックスを削除できます。それでも必要な場合は、そのデータのインデックスを再作成する必要があります。インデックスを削除する場合は、ノードをシャットダウンし、data/{clustername}/nodes/0/indicesの下のインデックスフォルダーを削除する必要があります(空、_stateフォルダーのみを含む)。

12
Andrei Stefan
  1. インデックスを削除して、もう一度作成してみてください。時々助けます。

  2. または、同じクエリ内でintおよびstringフィールドをクエリしようとしている可能性があります。

1
Tadej