搜索分片 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

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,您必须拥有目标数据流、索引或别名的 view_index_metadatamanage 索引权限

描述

编辑

搜索分片 API 返回将执行搜索请求的索引和分片。这可以为解决问题或使用路由和分片首选项进行优化规划提供有用的反馈。当使用过滤别名时,过滤器将作为 indices 部分的一部分返回。

路径参数

编辑
<target>
(可选,字符串)要搜索的数据流、索引和别名的逗号分隔列表。支持通配符(*)。要搜索所有数据流和索引,请省略此参数或使用 *_all

查询参数

编辑
allow_no_indices

(可选,布尔值)如果为 false,则当任何通配符表达式、索引别名_all 值仅以缺失或关闭的索引为目标时,请求将返回错误。即使请求以其他打开的索引为目标,此行为也适用。例如,如果一个索引以 foo 开头,但没有索引以 bar 开头,则以 foo*,bar* 为目标的请求将返回错误。

默认为 true

expand_wildcards

(可选,字符串)通配符模式可以匹配的索引类型。如果请求可以以数据流为目标,则此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如 open,hidden。有效值有

all
匹配任何数据流或索引,包括隐藏的。
open
匹配打开的、非隐藏的索引。 也匹配任何非隐藏的数据流。
closed
匹配关闭的、非隐藏的索引。 也匹配任何非隐藏的数据流。 数据流无法关闭。
hidden
匹配隐藏的数据流和隐藏的索引。 必须与 openclosed 或两者结合使用。
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
        }
      }
    ]
  ]
}

由于指定了路由值,搜索仅针对两个分片执行。