Удаление по запросу - это API OpenSearch. Он предоставляет функциональность удаления всех документов, соответствующих заданному запросу. В более ранних версиях пользователям приходилось устанавливать плагин Delete-By-Query и использовать конечную точку DELETE /_query для этого же случая.
Для чего он нужен
Этот API используется для удаления всех документов из индексов на основе запроса. После выполнения запроса OpenSearch запускает процесс удаления всех совпадающих документов в фоновом режиме, поэтому вам не нужно ждать завершения процесса.
Примеры
Удаление всех документов индекса без удаления отображения и настроек:
1 2 3 4 5 6 | POST /my_index/_delete_by_query?conflicts=proceed&pretty { "query": { "match_all": {} } } |
Параметр conflict в запросе используется для продолжения выполнения запроса даже в случае конфликта версий некоторых документов. Поведение при конфликте по умолчанию заключается в полном прерывании запроса.
Примечания
- Долго выполняющийся запрос delete_by_query можно завершить с помощью API _task.
- В теле запроса можно использовать тот же синтаксис для запросов, что и в API _search.
Общие проблемы
OpenSearch делает снимок индекса, когда вы нажимаете кнопку удаления по запросу, и использует _version документов для обработки запроса. Если за это время документ будет обновлен, это приведет к ошибке конфликта версий, и операция удаления завершится неудачей.