[[indices-shards-stores]]
=== Index shard stores API
++++
<titleabbrev>Index shard stores</titleabbrev>
++++

Retrieves store information
about replica shards in one or more indices.
For data streams, the API retrieves store
information for the stream's backing indices.

[source,console]
----
GET /my-index-000001/_shard_stores
----
// TEST[setup:my_index]


[[index-shard-stores-api-request]]
==== {api-request-title}

`GET /<target>/_shard_stores`

`GET /_shard_stores`


[[index-shard-stores-api-desc]]
==== {api-description-title}

The index shard stores API returns the following information:

* The node on which each replica shard exists
* Allocation ID for each replica shard
* Unique ID for each replica shard
* Any errors encountered
  while opening the shard index
  or from an earlier failure

By default, the API only returns store information
for primary shards that are unassigned
or have one or more unassigned replica shards.


[[index-shard-stores-api-path-params]]
==== {api-path-parms-title}

`<target>`::
(Optional, string)
Comma-separated list of data streams, indices, and index aliases used to limit
the request. Wildcard expressions (`*`) are supported.
+
To target all data streams and indices in a cluster, omit this parameter or use
`_all` or `*`.


[[index-shard-stores-api-query-params]]
==== {api-query-parms-title}

include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=allow-no-indices]
+
Defaults to `true`.

include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=expand-wildcards]
+
Defaults to `open`.

include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=index-ignore-unavailable]

`status`::
+
--
(Optional, string)
Comma-separated list of shard health statuses
used to limit the request.

Valid values include:

`green`::
The primary shard and all replica shards are assigned.

`yellow`::
One or more replica shards are unassigned.

`red`::
The primary shard is unassigned.

`all`::
Return all shards,
regardless of health status.

Defaults to `yellow,red`.
--

[[index-shard-stores-api-example]]
==== {api-examples-title}


[[index-shard-stores-api-single-ex]]
===== Get shard store information for a specific data stream or index

[source,console]
----
GET /test/_shard_stores
----
// TEST[s/^/PUT test\n/]


[[index-shard-stores-api-multi-ex]]
===== Get shard store information for several data streams and indices

[source,console]
----
GET /test1,test2/_shard_stores
----
// TEST[s/^/PUT test1\nPUT test2\n/]


[[index-shard-stores-api-all-ex]]
===== Get shard store information for all data streams and indices

[source,console]
----
GET /_shard_stores
----
// TEST[continued]


[[index-shard-stores-api-health-ex]]
===== Get shard store information based on cluster health

You can use the `status` query parameter
to limit returned information based on shard health.

The following request only returns information
for assigned primary and replica shards.

[source,console]
--------------------------------------------------
GET /_shard_stores?status=green
--------------------------------------------------
// TEST[setup:node]
// TEST[s/^/PUT my-index-00001\n{"settings":{"number_of_shards":1, "number_of_replicas": 0}}\nPOST my-index-00001\/test\?refresh\n{"test": "test"}\n/]

The API returns the following response:

[source,console-result]
--------------------------------------------------
{
  "indices": {
    "my-index-00001": {
      "shards": {
        "0": {                                          <1>
          "stores": [                                   <2>
            {
            "sPa3OgxLSYGvQ4oPs-Tajw": {                 <3>
              "name": "node_t0",
              "ephemeral_id": "9NlXRFGCT1m8tkvYCMK-8A",
              "transport_address": "local[1]",
              "attributes": {}
            },
            "allocation_id": "2iNySv_OQVePRX-yaRH_lQ",  <4>
            "allocation": "primary|replica|unused"      <5>
            "store_exception": ...                      <6>
            }
          ]
        }
      }
    }
  }
}
--------------------------------------------------
// TESTRESPONSE[s/"store_exception": \.\.\.//]
// TESTRESPONSE[s/"sPa3OgxLSYGvQ4oPs-Tajw"/\$node_name/]
// TESTRESPONSE[s/: "[^"]*"/: $body.$_path/]
// TESTRESPONSE[s/"attributes": \{[^}]*\}/"attributes": $body.$_path/]



<1> The key is the corresponding shard id for the store information
<2> A list of store information for all copies of the shard
<3> The node information that hosts a copy of the store, the key
    is the unique node id.
<4> The allocation id of the store copy
<5> The status of the store copy, whether it is used as a
    primary, replica or not used at all
<6> Any exception encountered while opening the shard index or
    from earlier engine failure
