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_metadataилиmanageдоступ к индексу для целевого потока данных, индекса или псевдонима.
Описание
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
}
}
]
]
} Из-за указанных значений маршрутизации поиск выполняется только на двух фрагментах.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/search-shards.html