Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API ›Search API

API поиска фрагментов

Справочник по новым API

Для получения самых актуальных данных об API обратитесь к Search 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API