Emil
Emil

Reputation: 6921

NoShardAvailableException after starting the Elasticsearch.bat

I have started elasticsearch.bat and I completed first indexing using Nest

ElasticClient.Index query.

Then I made my first query using

var results = ElasticClient.Search<Product>(body =>
     body.Query(query =>
     query.QueryString(qs => qs.Query(key))));

This is all I have done. Later I restarted elasticsearch console using elasticsearch.bat and now it keeps giving me error message NoShardAvailableException. I deleted and redownloaded a new elasticsearch.bat and i keep getting same error. How can I resolve it?

I am using 1.7.1 version and btw I installed Marvel plugin also.

Upvotes: 0

Views: 205

Answers (1)

Danielson
Danielson

Reputation: 2696

Your problem is not related with a version, so updating will not resolve the issue. The issue is that shards cannot be assigned to nodes. As shown by your call, see "status": "red" and "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
}

First off, you can try reassigning the unassigned_shards, using (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 }
    }]
}'

Which shards are unassigned? To see this, use:

curl -XGET http://localhost:9200/_cat/shards | grep UNASSIGNED | awk '{print $0}'

When you know which shards create the problem, you can start by trying to recover the indices, using (indices recovery:

curl -XGET http://localhost:9200/index1,index2/_recovery

I find the grep UNASSIGNED statement particularly useful if, a couple out of a lot, are unassigned. Sometimes it is just easier (of course depending on the ease of refilling you indices), to delete and refill you index, in that case (delete indices) :

curl -XDELETE 'http://localhost:9200/concept_cv,concept_pl,concept_pt/'

Then reinsert your data.

This issue most probably was due to incorrect shutdown from your cluster, possibly also OOM exceptions. For more information on 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

Upvotes: 1

Related Questions