Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API ›Документы API

API удаления

Новая справка по API

Для получения самых актуальных данных по API обратитесь к Документам API.

Удаляет JSON-документ из указанного индекса.

Запрос

DELETE /<index>/_doc/<_id>

Предварительные условия

  • Если функции безопасности Elasticsearch включены, у вас должны быть delete или write права доступа к индексу для целевого индекса или алиаса индекса.

Описание

Для удаления документа из индекса используется метод DELETE. Вам необходимо указать имя индекса и идентификатор документа.

Нельзя отправлять запросы на удаление напрямую в потоковое хранилище данных. Для удаления документа в потоковом хранилище данных необходимо указать базовый индекс, содержащий документ. См. Обновление или удаление документов в базовом индексе.

Оптимистический контроль конкурентности

Операции удаления могут быть условными и выполняться только в том случае, если последнее изменение документа было присвоено порядковый номер и первичный термин, указанные параметрами if_seq_no и if_primary_term. Если обнаружено несоответствие, операция приведет к VersionConflictException и статусному коду 409. Подробнее см. Оптимистический контроль конкурентности.

Версионирование

Каждый индексированный документ версионируется. При удалении документа можно указать version, чтобы убедиться, что соответствующий документ, который мы пытаемся удалить, действительно удаляется, и он не изменился в то же время. Каждая операция записи, выполненная над документом, включая удаление, приводит к увеличению его версии. Номер версии удаленного документа остается доступным в течение короткого времени после удаления, чтобы обеспечить контроль конкурирующих операций. Длительность, в течение которой версия удаленного документа остается доступной, определяется настройкой индекса index.gc_deletes и по умолчанию составляет 60 секунд.

Маршрутизация

Если при индексировании используется маршрутизация, значение маршрутизации также необходимо указать для удаления документа.

Если отображение _routing настроено на required и значение маршрутизации не указано, API удаления выведет RoutingMissingException и отклонит запрос.

Например:

resp = client.delete(
    index="my-index-000001",
    id="1",
    routing="shard-1",
)
print(resp)
response = client.delete(
  index: 'my-index-000001',
  id: 1,
  routing: 'shard-1'
)
puts response
const response = await client.delete({
  index: "my-index-000001",
  id: 1,
  routing: "shard-1",
});
console.log(response);
DELETE /my-index-000001/_doc/1?routing=shard-1

Этот запрос удаляет документ с идентификатором 1, но маршрутизируется на основе пользователя. Документ не удаляется, если не указана правильная маршрутизация.

Автоматическое создание индекса

Если используется вариант внешнего версионирования, операция удаления автоматически создает указанный индекс, если он не существует. Сведения об ручном создании индексов см. в API создания индекса.

Распределённая система

Операция удаления получает хэшированный идентификатор фрагмента. Затем он перенаправляется в первичный фрагмент в этой группе идентификаторов и реплицируется (при необходимости) в репликах фрагментов в этой группе идентификаторов.

Ожидание активных фрагментов

При выполнении запросов на удаление вы можете установить параметр wait_for_active_shards, чтобы потребовать минимальное количество активных копий фрагментов перед началом обработки запроса на удаление. См. здесь для получения дополнительных сведений и примера использования.

Обновление

Управление временем, когда изменения, внесенные этим запросом, станут видимыми для поиска. См. ?refresh.

Таймаут

Первичный фрагмент, назначенный для выполнения операции удаления, может быть недоступен при выполнении операции удаления. Это может быть связано с тем, что первичный фрагмент в настоящее время восстанавливается из хранилища или выполняет перемещение. По умолчанию операция удаления будет ожидать, пока первичный фрагмент станет доступным в течение 1 минуты перед ошибкой и ответом с ошибкой. Параметр timeout может использоваться для явного указания времени ожидания. Вот пример установки его на 5 минут:

resp = client.delete(
    index="my-index-000001",
    id="1",
    timeout="5m",
)
print(resp)
response = client.delete(
  index: 'my-index-000001',
  id: 1,
  timeout: '5m'
)
puts response
const response = await client.delete({
  index: "my-index-000001",
  id: 1,
  timeout: "5m",
});
console.log(response);
DELETE /my-index-000001/_doc/1?timeout=5m

Параметры пути

<index>
(Обязательно, строка) Имя целевого индекса.
<_id>
(Обязательно, строка) Уникальный идентификатор документа.

Параметры запроса

if_seq_no
(Необязательно, целое число) Выполнить операцию только в том случае, если у документа есть этот порядковый номер. См. Оптимистический контроль конкурентности.
if_primary_term
(Необязательно, целое число) Выполнить операцию только в том случае, если у документа есть этот первичный термин. См. Оптимистический контроль конкурентности.
refresh
(Необязательно, перечисление) Если true, Elasticsearch обновляет затронутые фрагменты, чтобы сделать эту операцию видимой для поиска, если wait_for, тогда ожидается обновление, чтобы сделать эту операцию видимой для поиска, если false, ничего не делать с обновлениями. Допустимые значения: true, false, wait_for. По умолчанию: false.
routing
(Необязательно, строка) Пользовательское значение, используемое для маршрутизации операций к определенному фрагменту.
timeout
(Необязательно, единицы измерения времени) Срок ожидания ожидания активных фрагментов. По умолчанию 1m (одна минута).
version
(Необязательно, целое число) Явный номер версии для контроля конкурентности. Указанная версия должна совпадать с текущей версией документа для успешного выполнения запроса.
version_type
(Необязательно, перечисление) Конкретный тип версии: external, external_gte.
wait_for_active_shards

(Необязательно, строка) Количество копий каждого фрагмента, которые должны быть активны перед выполнением операции. Установите значение all или любое целое число от 0 до максимального количества копий каждого фрагмента в индексе (number_of_replicas+1). По умолчанию 1, что означает ожидание только активности каждого первичного фрагмента.

См. Активные фрагменты.

Примеры

Удалить JSON-документ 1 из индекса my-index-000001:

resp = client.delete(
    index="my-index-000001",
    id="1",
)
print(resp)
response = client.delete(
  index: 'my-index-000001',
  id: 1
)
puts response
const response = await client.delete({
  index: "my-index-000001",
  id: 1,
});
console.log(response);
DELETE /my-index-000001/_doc/1

API возвращает следующий результат:

{
  "_shards": {
    "total": 2,
    "failed": 0,
    "successful": 2
  },
  "_index": "my-index-000001",
  "_id": "1",
  "_version": 2,
  "_primary_term": 1,
  "_seq_no": 5,
  "result": "deleted"
}

© 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/docs-delete.html

Spec-Zone.ru

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