[[search-shards]] == Search Shards API 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. The `index` and `type` parameters may be single values, or comma-separated. [float] === Usage Full example: [source,js] -------------------------------------------------- curl -XGET 'localhost:9200/twitter/_search_shards' -------------------------------------------------- This will yield the following result: [source,js] -------------------------------------------------- { "nodes": { "JklnKbD7Tyqi9TP3_Q_tBg": { "name": "Rl'nnd", "transport_address": "inet[/192.168.1.113:9300]" } }, "shards": [ [ { "index": "twitter", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "primary": true, "relocating_node": null, "shard": 3, "state": "STARTED" } ], [ { "index": "twitter", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "primary": true, "relocating_node": null, "shard": 4, "state": "STARTED" } ], [ { "index": "twitter", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "primary": true, "relocating_node": null, "shard": 0, "state": "STARTED" } ], [ { "index": "twitter", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "primary": true, "relocating_node": null, "shard": 2, "state": "STARTED" } ], [ { "index": "twitter", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "primary": true, "relocating_node": null, "shard": 1, "state": "STARTED" } ] ] } -------------------------------------------------- And specifying the same request, this time with a routing value: [source,js] -------------------------------------------------- curl -XGET 'localhost:9200/twitter/_search_shards?routing=foo,baz' -------------------------------------------------- This will yield the following result: [source,js] -------------------------------------------------- { "nodes": { "JklnKbD7Tyqi9TP3_Q_tBg": { "name": "Rl'nnd", "transport_address": "inet[/192.168.1.113:9300]" } }, "shards": [ [ { "index": "twitter", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "primary": true, "relocating_node": null, "shard": 2, "state": "STARTED" } ], [ { "index": "twitter", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "primary": true, "relocating_node": null, "shard": 4, "state": "STARTED" } ] ] } -------------------------------------------------- This time the search will only be executed against two of the shards, because routing values have been specified. [float] === All parameters: [horizontal] `routing`:: A comma-separated list of routing values to take into account when determining which shards a request would be executed against. `preference`:: Controls a `preference` of which shard replicas to execute the search request on. By default, the operation is randomized between the shard replicas. See the link:search-request-preference.html[preference] documentation for a list of all acceptable values. `local`:: A boolean value whether to read the cluster state locally in order to determine where shards are allocated instead of using the Master node's cluster state.