API удаления
Удаляет JSON-документ из указанного индекса.
Запрос
DELETE /<index>/_doc/<_id>
Предварительные условия
- Если включены функции безопасности Elasticsearch, у вас должны быть
deleteилиwriteразрешения на индекс для целевого индекса или псевдонима индекса.
Описание
Для удаления документа из индекса используется метод DELETE. Вы должны указать имя индекса и идентификатор документа.
Нельзя отправлять запросы на удаление напрямую на потоки данных. Для удаления документа в потоке данных необходимо указать базовый индекс, содержащий документ. См. Обновление или удаление документов в базовом индексе.
Контроль конкурентности (Optimistic concurrency control)
Операции удаления могут быть условными и выполняться только в том случае, если последнее изменение документа было присвоено порядковый номер и первичный срок, указанные параметрами if_seq_no и if_primary_term. Если обнаружено несоответствие, операция приведет к VersionConflictException и коду состояния 409. Подробнее см. Контроль конкурентности (Optimistic concurrency control).
Версионирование
Каждый индексированный документ имеет версию. При удалении документа можно указать version, чтобы убедиться, что удаляется именно нужный документ и он не был изменён тем временем. Каждая операция записи, включая удаление, приводит к увеличению версии документа. Номер версии удалённого документа доступен в течение короткого времени после удаления, чтобы контролировать одновременные операции. Длительность хранения версии удалённого документа определяется настройкой индекса index.gc_deletes и по умолчанию составляет 60 секунд.
Маршрутизация (Routing)
Если при индексировании использовалась маршрутизация, значение маршрута также необходимо указать при удалении документа.
Если отображение _routing настроено на required и значение маршрута не указано, API удаления возвращает ошибку RoutingMissingException и отклоняет запрос.
Например:
DELETE /my-index-000001/_doc/1?routing=shard-1
Этот запрос удаляет документ с id 1, но маршрутизируется на основе пользователя. Документ не удаляется, если не указан корректный маршрут.
Автоматическое создание индекса
Если используется вариант внешнего версионирования, операция удаления автоматически создаёт указанный индекс, если он не существует. Подробнее об ручном создании индексов см. API создания индекса.
Распределённая обработка
Операция удаления хешируется в конкретный идентификатор фрагмента. Затем она перенаправляется на первичный фрагмент в этой группе идентификаторов и, при необходимости, реплицируется на фрагмент-реплики в этой же группе идентификаторов.
Ожидание активности фрагментов
При выполнении запросов на удаление можно задать параметр wait_for_active_shards для требования минимального количества активных копий фрагментов перед началом обработки запроса на удаление. Дополнительные сведения и пример использования см. в документации.
Обновление (Refresh)
Управление отображением изменений, внесённых данным запросом, для поиска. См. ?refresh.
Таймаут
Первичный фрагмент, назначенный для выполнения операции удаления, может быть недоступен во время выполнения операции. Причины могут включать восстановление первичного фрагмента из хранилища или перераспределение. По умолчанию операция удаления будет ожидать доступности первичного фрагмента в течение 1 минуты, после чего выдаст ошибку. Параметр timeout позволяет явно указать время ожидания. Вот пример задания времени ожидания в 5 минут:
DELETE /my-index-000001/_doc/1?timeout=5m
Параметры пути
-
<index> - (Обязательно, строка) Название целевого индекса.
-
<_id> - (Обязательно, строка) Уникальный идентификатор документа.
Параметры запроса
-
if_seq_no - (Необязательно, целое число) Выполнить операцию только в том случае, если у документа есть этот порядковый номер. См. Контроль конкурентности (Optimistic concurrency control).
-
if_primary_term - (Необязательно, целое число) Выполнить операцию только в том случае, если у документа есть этот первичный срок. См. Контроль конкурентности (Optimistic concurrency control).
-
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или любое положительное целое число до максимального числа фрагментов в индексе (number_of_replicas+1). По умолчанию: 1, первичный фрагмент.См. Активные фрагменты.
Примеры
Удалите JSON-документ 1 из индекса my-index-000001:
DELETE /my-index-000001/_doc/1
API возвращает следующий результат:
{
"_shards": {
"total": 2,
"failed": 0,
"successful": 2
},
"_index": "my-index-000001",
"_type": "_doc",
"_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/7.17/docs-delete.html