启动 Elasticsearch.bat 后出现 NoShardAvailableException
NoShardAvailableException after starting the Elasticsearch.bat
我已经开始 elasticsearch.bat 并且我使用 Nest
完成了第一次索引
ElasticClient.Index查询。
然后我使用
进行了第一个查询
var results = ElasticClient.Search<Product>(body =>
body.Query(query =>
query.QueryString(qs => qs.Query(key))));
这就是我所做的一切。后来我使用 elasticsearch.bat 重新启动了 elasticsearch 控制台,现在它一直给我错误消息 NoShardAvailableException。我删除并重新下载了一个新的 elasticsearch.bat,但我一直收到同样的错误。我该如何解决?
我使用的是 1.7.1 版本,顺便说一句,我还安装了 Marvel 插件。
您的问题与版本无关,更新无法解决问题。问题是分片不能分配给节点。如您的电话所示,请参阅 "status": "red"
和 "unassigned_shards": 8
:
{
"cluster_name": "elasticsearch",
"status": "red",
"timed_out": false,
"number_of_nodes": 2,
"number_of_data_nodes": 2,
"active_primary_shards": 8,
"active_shards": 16,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 8,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0
}
首先,您可以尝试重新分配 unassigned_shards
,使用 (see es for more on this):
curl -XPOST 'localhost:9200/_cluster/reroute' -d '{"commands": [
{"allocate": {
"index": "{your_index_name}",
"shard": 3,
"node": "{your_assigning_node_ide}",
"allow_primary": true }
}]
}'
哪些分片未分配?要查看此内容,请使用:
curl -XGET http://localhost:9200/_cat/shards | grep UNASSIGNED | awk '{print [=12=]}'
当您知道是哪个分片造成问题时,您可以开始尝试 recover
索引,使用 (indices recovery:
curl -XGET http://localhost:9200/index1,index2/_recovery
我发现 grep UNASSIGNED
语句在很多未分配的情况下特别有用。有时删除并重新填充索引更容易(当然取决于重新填充索引的难易程度),在这种情况下 (delete indices) :
curl -XDELETE 'http://localhost:9200/concept_cv,concept_pl,concept_pt/'
然后重新插入您的数据。
这个问题很可能是由于您的集群不正确关闭造成的,也可能是 OOM 异常。有关 status : red
的更多信息:
https://t37.net/how-to-fix-your-elasticsearch-cluster-stuck-in-initializing-shards-mode.html
http://elasticsearch-users.115913.n3.nabble.com/how-to-resolve-elasticsearch-status-red-td4020369.html
我已经开始 elasticsearch.bat 并且我使用 Nest
完成了第一次索引ElasticClient.Index查询。
然后我使用
进行了第一个查询var results = ElasticClient.Search<Product>(body =>
body.Query(query =>
query.QueryString(qs => qs.Query(key))));
这就是我所做的一切。后来我使用 elasticsearch.bat 重新启动了 elasticsearch 控制台,现在它一直给我错误消息 NoShardAvailableException。我删除并重新下载了一个新的 elasticsearch.bat,但我一直收到同样的错误。我该如何解决?
我使用的是 1.7.1 版本,顺便说一句,我还安装了 Marvel 插件。
您的问题与版本无关,更新无法解决问题。问题是分片不能分配给节点。如您的电话所示,请参阅 "status": "red"
和 "unassigned_shards": 8
:
{
"cluster_name": "elasticsearch",
"status": "red",
"timed_out": false,
"number_of_nodes": 2,
"number_of_data_nodes": 2,
"active_primary_shards": 8,
"active_shards": 16,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 8,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0
}
首先,您可以尝试重新分配 unassigned_shards
,使用 (see es for more on this):
curl -XPOST 'localhost:9200/_cluster/reroute' -d '{"commands": [
{"allocate": {
"index": "{your_index_name}",
"shard": 3,
"node": "{your_assigning_node_ide}",
"allow_primary": true }
}]
}'
哪些分片未分配?要查看此内容,请使用:
curl -XGET http://localhost:9200/_cat/shards | grep UNASSIGNED | awk '{print [=12=]}'
当您知道是哪个分片造成问题时,您可以开始尝试 recover
索引,使用 (indices recovery:
curl -XGET http://localhost:9200/index1,index2/_recovery
我发现 grep UNASSIGNED
语句在很多未分配的情况下特别有用。有时删除并重新填充索引更容易(当然取决于重新填充索引的难易程度),在这种情况下 (delete indices) :
curl -XDELETE 'http://localhost:9200/concept_cv,concept_pl,concept_pt/'
然后重新插入您的数据。
这个问题很可能是由于您的集群不正确关闭造成的,也可能是 OOM 异常。有关 status : red
的更多信息:
https://t37.net/how-to-fix-your-elasticsearch-cluster-stuck-in-initializing-shards-mode.html
http://elasticsearch-users.115913.n3.nabble.com/how-to-resolve-elasticsearch-status-red-td4020369.html