搜索分片 API
编辑搜索分片 API
编辑返回将执行搜索请求的索引和分片。
resp = client.search_shards( index="my-index-000001", ) print(resp)
response = client.search_shards( index: 'my-index-000001' ) puts response
const response = await client.searchShards({ index: "my-index-000001", }); console.log(response);
GET /my-index-000001/_search_shards
请求
编辑GET /<target>/_search_shards
描述
编辑搜索分片 API 返回将执行搜索请求的索引和分片。这可以为解决问题或使用路由和分片首选项进行优化规划提供有用的反馈。当使用过滤别名时,过滤器将作为 indices
部分的一部分返回。
路径参数
编辑-
<target>
- (可选,字符串)要搜索的数据流、索引和别名的逗号分隔列表。支持通配符(
*
)。要搜索所有数据流和索引,请省略此参数或使用*
或_all
。
查询参数
编辑-
allow_no_indices
-
(可选,布尔值)如果为
false
,则当任何通配符表达式、索引别名 或_all
值仅以缺失或关闭的索引为目标时,请求将返回错误。即使请求以其他打开的索引为目标,此行为也适用。例如,如果一个索引以foo
开头,但没有索引以bar
开头,则以foo*,bar*
为目标的请求将返回错误。默认为
true
。 -
expand_wildcards
-
(可选,字符串)通配符模式可以匹配的索引类型。如果请求可以以数据流为目标,则此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden
。有效值有-
all
- 匹配任何数据流或索引,包括隐藏的。
-
open
- 匹配打开的、非隐藏的索引。 也匹配任何非隐藏的数据流。
-
closed
- 匹配关闭的、非隐藏的索引。 也匹配任何非隐藏的数据流。 数据流无法关闭。
-
hidden
- 匹配隐藏的数据流和隐藏的索引。 必须与
open
、closed
或两者结合使用。 -
none
- 不接受通配符模式。
默认为
open
。 -
-
ignore_unavailable
- (可选,布尔值)如果为
false
,则当请求以缺失或关闭的索引为目标时,请求将返回错误。 默认为false
。 -
local
- (可选,布尔值)如果为
true
,则请求仅从本地节点检索信息。 默认为false
,这意味着信息从主节点检索。 -
preference
- (可选,字符串)指定应该在哪个节点或分片上执行操作。 默认情况下是随机的。
-
routing
- (可选,字符串)用于将操作路由到特定分片的自定义值。
-
master_timeout
- (可选,时间单位)等待主节点的时长。 如果在超时过期之前主节点不可用,则请求失败并返回错误。 默认为
30s
。也可以设置为-1
以表示请求永远不应超时。
示例
编辑resp = client.search_shards( index="my-index-000001", ) print(resp)
response = client.search_shards( index: 'my-index-000001' ) puts response
const response = await client.searchShards({ index: "my-index-000001", }); console.log(response);
GET /my-index-000001/_search_shards
API 返回以下结果
{ "nodes": ..., "indices" : { "my-index-000001": { } }, "shards": [ [ { "index": "my-index-000001", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "relocating_node": null, "primary": true, "shard": 0, "state": "STARTED", "allocation_id": {"id":"0TvkCyF7TAmM1wHP4a42-A"}, "relocation_failure_info" : { "failed_attempts" : 0 } } ], [ { "index": "my-index-000001", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "relocating_node": null, "primary": true, "shard": 1, "state": "STARTED", "allocation_id": {"id":"fMju3hd1QHWmWrIgFnI4Ww"}, "relocation_failure_info" : { "failed_attempts" : 0 } } ], [ { "index": "my-index-000001", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "relocating_node": null, "primary": true, "shard": 2, "state": "STARTED", "allocation_id": {"id":"Nwl0wbMBTHCWjEEbGYGapg"}, "relocation_failure_info" : { "failed_attempts" : 0 } } ], [ { "index": "my-index-000001", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "relocating_node": null, "primary": true, "shard": 3, "state": "STARTED", "allocation_id": {"id":"bU_KLGJISbW0RejwnwDPKw"}, "relocation_failure_info" : { "failed_attempts" : 0 } } ], [ { "index": "my-index-000001", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "relocating_node": null, "primary": true, "shard": 4, "state": "STARTED", "allocation_id": {"id":"DMs7_giNSwmdqVukF7UydA"}, "relocation_failure_info" : { "failed_attempts" : 0 } } ] ] }
指定相同的请求,这次使用路由值
resp = client.search_shards( index="my-index-000001", routing="foo,bar", ) print(resp)
response = client.search_shards( index: 'my-index-000001', routing: 'foo,bar' ) puts response
const response = await client.searchShards({ index: "my-index-000001", routing: "foo,bar", }); console.log(response);
GET /my-index-000001/_search_shards?routing=foo,bar
API 返回以下结果
{ "nodes": ..., "indices" : { "my-index-000001": { } }, "shards": [ [ { "index": "my-index-000001", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "relocating_node": null, "primary": true, "shard": 2, "state": "STARTED", "allocation_id": {"id":"fMju3hd1QHWmWrIgFnI4Ww"}, "relocation_failure_info" : { "failed_attempts" : 0 } } ], [ { "index": "my-index-000001", "node": "JklnKbD7Tyqi9TP3_Q_tBg", "relocating_node": null, "primary": true, "shard": 3, "state": "STARTED", "allocation_id": {"id":"0TvkCyF7TAmM1wHP4a42-A"}, "relocation_failure_info" : { "failed_attempts" : 0 } } ] ] }
由于指定了路由值,搜索仅针对两个分片执行。