| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | [[cluster-allocation-explain]]== Cluster Allocation Explain APIThe cluster allocation explanation API is designed to assist in answering thequestion "why is this shard unassigned?". To explain the allocation (onunassigned state) of a shard, issue a request like:[source,js]--------------------------------------------------$ curl -XGET 'http://localhost:9200/_cluster/allocation/explain' -d'{  "index": "myindex",  "shard": 0,  "primary": false}'--------------------------------------------------Specify the `index` and `shard` id of the shard you would like an explanationfor, as well as the `primary` flag to indicate whether to explain a primary orreplica shard.The response looks like:[source,js]--------------------------------------------------{  "shard" : {    "index" : "myindex",    "index_uuid" : "KnW0-zELRs6PK84l0r38ZA",    "id" : 0,    "primary" : false  },  "assigned" : false,                             <1>  "unassigned_info" : {    "reason" : "INDEX_CREATED",                   <2>    "at" : "2016-03-22T20:04:23.620Z"  },  "nodes" : {                                     <3>    "V-Spi0AyRZ6ZvKbaI3691w" : {      "node_name" : "node1",      "node_attributes" : {                       <4>        "bar" : "baz"      },      "final_decision" : "NO",                    <5>      "weight" : 0.06666675,                      <6>      "decisions" : [ {                           <7>        "decider" : "filter",        "decision" : "NO",        "explanation" : "node does not match index include filters [foo:\"bar\"]"      } ]    },    "Qc6VL8c5RWaw1qXZ0Rg57g" : {      "node_name" : "node2",      "node_attributes" : {        "bar" : "baz",        "foo" : "bar"      },      "final_decision" : "NO",      "weight" : -1.3833332,      "decisions" : [ {        "decider" : "same_shard",        "decision" : "NO",        "explanation" : "the shard cannot be allocated on the same node id [Qc6VL8c5RWaw1qXZ0Rg57g] on which it already exists"      } ]    },    "PzdyMZGXQdGhqTJHF_hGgA" : {      "node_name" : "node3",      "node_attributes" : { },      "final_decision" : "NO",      "weight" : 2.3166666,      "decisions" : [ {        "decider" : "filter",        "decision" : "NO",        "explanation" : "node does not match index include filters [foo:\"bar\"]"      } ]    }  }}--------------------------------------------------<1> Whether the shard is assigned or unassigned<2> Reason for the shard originally becoming unassigned<3> List of node decisions about the shard<4> User-added attributes the node has<5> Final decision for whether the shard is allowed to be allocated to this node<6> Weight for how much the allocator would like to allocate the shard to this node<7> List of decisions factoring into final decisionFor a shard that is already assigned, the output looks similar to:[source,js]--------------------------------------------------{  "shard" : {    "index" : "only-foo",    "index_uuid" : "KnW0-zELRs6PK84l0r38ZA",    "id" : 0,    "primary" : true  },  "assigned" : true,  "assigned_node_id" : "Qc6VL8c5RWaw1qXZ0Rg57g",      <1>  "nodes" : {    "V-Spi0AyRZ6ZvKbaI3691w" : {      "node_name" : "Susan Storm",      "node_attributes" : {        "bar" : "baz"      },      "final_decision" : "NO",      "weight" : 1.4499999,      "decisions" : [ {        "decider" : "filter",        "decision" : "NO",        "explanation" : "node does not match index include filters [foo:\"bar\"]"      } ]    },    "Qc6VL8c5RWaw1qXZ0Rg57g" : {      "node_name" : "Slipstream",      "node_attributes" : {        "bar" : "baz",        "foo" : "bar"      },      "final_decision" : "CURRENTLY_ASSIGNED",        <2>      "weight" : 0.0,      "decisions" : [ {        "decider" : "same_shard",        "decision" : "NO",        "explanation" : "the shard cannot be allocated on the same node id [Qc6VL8c5RWaw1qXZ0Rg57g] on which it already exists"      } ]    },    "PzdyMZGXQdGhqTJHF_hGgA" : {      "node_name" : "The Symbiote",      "node_attributes" : { },      "final_decision" : "NO",      "weight" : 3.6999998,      "decisions" : [ {        "decider" : "filter",        "decision" : "NO",        "explanation" : "node does not match index include filters [foo:\"bar\"]"      } ]    }  }}--------------------------------------------------<1> Node the shard is currently assigned to<2> The decision is "CURRENTLY_ASSIGNED" because the shard is currently assigned to this nodeYou can also have Elasticsearch explain the allocation of the first unassignedshard it finds by sending an empty body, such as:[source,js]--------------------------------------------------$ curl -XGET 'http://localhost:9200/_cluster/allocation/explain'--------------------------------------------------And if you would like to include all decisions that were factored into the finaldecision, the `include_yes_decisions` parameter will return all decisions:[source,js]--------------------------------------------------$ curl -XGET 'http://localhost:9200/_cluster/allocation/explain?include_yes_decisions=true'--------------------------------------------------
 |