Search Shards API
Returns the indices and shards that a search request would be executed against.
GET /my-index-000001/_search_shards
Request
GET /<index>/_search_shards
Description
The search shards api returns the indices and shards that a search request would be executed against. This can give useful feedback for working out issues or planning optimizations with routing and shard preferences. When filtered aliases are used, the filter is returned as part of the indices
section.
Path parameters
<index>
(Optional, string) Comma-separated list or wildcard expression of index names used to limit the request.
Query parameters
allow_no_indices
(Optional, boolean) If true
, the request does not return an error if a wildcard expression or _all
value retrieves only missing or closed indices.
This parameter also applies to index aliases that point to a missing or closed index.
Defaults to true
.
expand_wildcards
(Optional, string) Controls what kind of indices that wildcard expressions can expand to. Multiple values are accepted when separated by a comma, as in open,hidden
. Valid values are:
all
Expand to open and closed indices, including hidden indices.
open
Expand only to open indices.
closed
Expand only to closed indices.
hidden
Expansion of wildcards will include hidden indices. Must be combined with
open
,closed
, or both.none
Wildcard expressions are not accepted.
Defaults to open
.
ignore_unavailable
(Optional, boolean) If true
, missing or closed indices are not included in the response. Defaults to false
.
local
(Optional, boolean) If true
, the request retrieves information from the local node only. Defaults to false
, which means information is retrieved from the master node.
preference
(Optional, string) Specifies the node or shard the operation should be performed on. Random by default.
routing
(Optional, string) Target the specified primary shard.
Examples
GET /my-index-000001/_search_shards
The API returns the following result:
{
"nodes": ...,
"indices" : {
"my-index-000001": { }
},
"shards": [
[
{
"index": "my-index-000001",
"node": "JklnKbD7Tyqi9TP3_Q_tBg",
"primary": true,
"shard": 0,
"state": "STARTED",
"allocation_id": {"id":"0TvkCyF7TAmM1wHP4a42-A"},
"relocating_node": null
}
],
[
{
"index": "my-index-000001",
"node": "JklnKbD7Tyqi9TP3_Q_tBg",
"primary": true,
"shard": 1,
"state": "STARTED",
"allocation_id": {"id":"fMju3hd1QHWmWrIgFnI4Ww"},
"relocating_node": null
}
],
[
{
"index": "my-index-000001",
"node": "JklnKbD7Tyqi9TP3_Q_tBg",
"primary": true,
"shard": 2,
"state": "STARTED",
"allocation_id": {"id":"Nwl0wbMBTHCWjEEbGYGapg"},
"relocating_node": null
}
],
[
{
"index": "my-index-000001",
"node": "JklnKbD7Tyqi9TP3_Q_tBg",
"primary": true,
"shard": 3,
"state": "STARTED",
"allocation_id": {"id":"bU_KLGJISbW0RejwnwDPKw"},
"relocating_node": null
}
],
[
{
"index": "my-index-000001",
"node": "JklnKbD7Tyqi9TP3_Q_tBg",
"primary": true,
"shard": 4,
"state": "STARTED",
"allocation_id": {"id":"DMs7_giNSwmdqVukF7UydA"},
"relocating_node": null
}
]
]
}
Specifying the same request, this time with a routing value:
GET /my-index-000001/_search_shards?routing=foo,bar
The API returns the following result:
{
"nodes": ...,
"indices" : {
"my-index-000001": { }
},
"shards": [
[
{
"index": "my-index-000001",
"node": "JklnKbD7Tyqi9TP3_Q_tBg",
"primary": true,
"shard": 2,
"state": "STARTED",
"allocation_id": {"id":"fMju3hd1QHWmWrIgFnI4Ww"},
"relocating_node": null
}
],
[
{
"index": "my-index-000001",
"node": "JklnKbD7Tyqi9TP3_Q_tBg",
"primary": true,
"shard": 3,
"state": "STARTED",
"allocation_id": {"id":"0TvkCyF7TAmM1wHP4a42-A"},
"relocating_node": null
}
]
]
}
Because of the specified routing values, the search is only executed against two of the shards.