Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как удалить целые документы из индекса поиска в службе "Поиск ИИ Azure" с помощью REST API или пакетов SDK Azure. В ней рассматриваются следующие задачи:
- Понимание необходимости удаления вручную
- Определение определенных документов для удаления
- Получите количество документов и метрики хранения
- Удаление одного документа или осиротевшего документа
- Массовое удаление документов
- Подтверждение удаления
Подсказка
Чтобы быстро удалить один документ, перейдите к разделу "Удалить один документ".
Предпосылки
Служба поиска ИИ Azure (любой уровень). Создайте службу или найдите существующую.
Существующий индекс поиска с документами для удаления. В этой статье предполагается, что вы уже создали индекс и загруженные документы.
Разрешения на удаление документов:
- Проверка подлинности на основе ключей: ключ API администратора для службы поиска.
-
Проверка подлинности на основе ролей: роль вкладчика данных индексов поиска или разрешение
Microsoft.Search/searchServices/indexes/documents/delete.
Для разработки пакета SDK установите клиентская библиотека поиска Azure:
- Python: azure-search-documents
- .NET: Azure. Search.Documents
- JavaScript: @azure/search-documents
- Java: azure-search-documents
Понимание необходимости удаления вручную
Удаление документов вручную необходимо при использовании подхода индексирования в режиме push, где код приложения обрабатывает импорт данных и управляет индексированием.
Если вы используете Logic Apps для загрузки индекса (предварительная версия), также необходимо вручную удалять документы.
Кроме того, может потребоваться вручную удалить документы в нагрузках, управляемых индексатором, если поисковые документы становятся "оторванными" от исходных документов. Важное преимущество индексаторов — автоматическое получение содержимого и синхронизация с помощью функций обнаружения изменений и удаления целевого источника данных. Все поддерживаемые источники данных обеспечивают некоторый уровень обнаружения. Но в некоторых случаях синхронизированное удаление предопределяется стратегией мягкого удаления, при которой исходный документ (или запись) помечается для удаления, запускается индексатор для удаления индексированного содержимого, и только после обновления индекса физически удаляется исходное содержимое. Если исходное содержимое удаляется сначала, у вас есть потерянные документы в индексе поиска. Чтобы повторно установить паритет между исходным и индексным содержимым, необходимо вручную удалить потерянные документы в индексе.
Следующие ссылки содержат дополнительные сведения об обнаружении изменений и удалений для каждого источника данных в рабочих нагрузках на основе индексатора.
- хранилище Azure
- Azure SQL
- Azure Cosmos DB
- База данных Azure для MySQL (предварительная версия)
- Индексатор SharePoint
- Индексатор OneLake
Определение определенных документов для удаления
Все документы однозначно определяются ключом документа в индексе поиска. Чтобы удалить документ, необходимо определить, какое поле является ключом документа и указать ключ в запросе на удаление.
На портале Azure можно просмотреть поля каждого индекса. Ключи документа — это строковые поля, обозначенные значком ключа, чтобы их было легче заметить.
Поиск ключа документа
Когда вы знаете, какое поле является ключом документа, вы можете получить значение ключа, выполнив запрос, возвращающий поле ключа в результатах поиска.
В этом примере строка поиска используется для поиска документа в индексе, а инструкция select определяет, какие поля находятся в результатах. "HotelId" — это ключ документа в этом примере.
POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2025-09-01
{
"search": "this query has terms that pertain to the document I want to delete",
"select": "HotelName, HotelId",
"count": true
}
Результаты поиска по этому ключевому слову являются топ-50 по умолчанию. Если документ, который вы хотите удалить, соответствует условиям поиска, вы должны увидеть его (и его ключ) в результатах. Убедитесь, что запрос содержит описательное поле, которое помогает подтвердить наличие правильного документа.
{
"@odata.count": 50,
"value": [
{
"@search.score": 4.5116634,
"HotelId": "18",
"HotelName": "Ocean Water Resort & Spa"
}
...
]
}
Простая строка проста, но если индекс использует поле в кодировке Base-64 или если документы поиска были созданы из parsingMode параметра, возможно, вы работаете со значениями, с которыми вы не знакомы. Если вы работаете с документами, разбитыми на части индексатором, ключ документа часто создается как "chunked_id", состоящий из длинной последовательности цифр и букв.
Поиск определенного документа
Теперь, когда у вас есть ключ документа, выполните запрос поиска , который извлекает весь документ. Если документ является фрагментом, вы увидите идентификатор родительского документа. Ключ документа включен в качестве параметра запроса.
В первом примере возвращается отель, имеющий значение ключа документа 18.
GET https://[service name].search.windows.net/indexes/hotels-sample/docs('18')&api-version=2025-09-01
Второй пример возвращает блок-документ. Ключ документа — это chunk_id.
GET https://[service name].search.windows.net/indexes/chunking-example-index/docs('aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb')&api-version=2025-09-01
Ответ из второго примера содержит все поля, которые следует просмотреть, чтобы убедиться, что вы знаете, что вы удаляете. Поля, содержащие информацию о родителе, полезны, если необходимо вручную переиндексировать один родительский документ на составные части в поисковом индексе.
{
"chunk_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"parent_id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"chunk": "Unpopulated Slopes of an Active Volcano\u2014Naples, Italy ... 90\n\nDazzling Coastlines\u2014Italy ... .92\n\nLiving on Fertile Land\u2014Nile River, Egypt ... 94\n\n\n\n vii",
"title": "earth_at_night_508.pdf",
"text_vector": [ <omitted> ]
}
Подсказка
Используйте клиент REST, клиент Azure SDK или средство командной строки для выполнения подстановочного запроса. Портал Azure не поддерживает запросы GET для запроса.
Получите количество документов и метрики хранения
Перед удалением документов получите начальные метрики для определения количества документов и объема хранилища индекса, чтобы подтвердить удаление позже.
Количество документов и хранилище индексов можно получить с помощью:
- Портал Azure, в разделе управление поиском>Индексы.
- Индексы — REST API получения статистики
Ниже приведен пример ответа:
{
"documentCount": 12,
"storageSize": 123456,
"vectorIndexSize": 123456
}
Удаление одного документа
Используйте REST API Документы - Индекс с помощью удаления
@search.action, чтобы удалить его из индекса поиска.Сформулируйте вызов POST, указывающий имя индекса и конечную точку
docs/index.Убедитесь, что текст запроса содержит ключ документа, который требуется удалить.
POST https://[service name].search.windows.net/indexes/hotels-sample/docs/index?api-version=2025-09-01 Content-Type: application/json api-key: [admin key] { "value": [ { "@search.action": "delete", "id": "18" } ] }Отправьте запрос.
В следующей таблице описаны различные коды состояния каждого документа, которые можно вернуть в ответе. Некоторые коды состояния указывают на проблемы с самим запросом, а другие указывают на временные условия ошибки. Последний вы должны повторить после задержки.
Код состояния Meaning Повторная попытка Примечания. 200 Документ успешно удален. n/a Операции удаления являются идемпотентными. То есть, даже если ключ документа не существует в индексе, попытка удаления с этим ключом приводит к коду состояния 200. 400 В документе произошла ошибка, из-за которой она не была удалена. нет Сообщение об ошибке в ответе содержит сведения. 422 Индекс временно недоступен, так как он был обновлен с флагом AllowIndexDowntime с значением true. Да Подождите, пока индекс станет доступным. 503 (Сервис временно недоступен) Служба поиска временно недоступна, возможно, из-за тяжелой нагрузки. Да Ваш код должен подождать в этом случае, прежде чем предпринимать повторную попытку, иначе вы рискуете увеличить время недоступности службы. Замечание
Если клиентский код часто встречает ответ 207, одна из возможных причин заключается в том, что система находится под нагрузкой. Это можно подтвердить, проверив
statusCodeсвойство 503. В таком случае мы рекомендуем троттлинг запросов индексирования. В противном случае, если индексирование трафика не утихает, система может начать отклонять все запросы с ошибками 503.Чтобы подтвердить удаление, можно повторно отправить поисковый запрос. Вы должны получить сообщение об ошибке 404: документ не найден.
GET https://[service name].search.windows.net/indexes/hotel-sample-index/docs/18?api-version=2025-09-01
Reference:Documents — Index
Успешный запрос на удаление возвращает HTTP 200 (ОК). Текст ответа содержит состояние для каждого документа:
{
"value": [
{ "key": "18", "status": true, "statusCode": 200 }
]
}
Массовое удаление документов
Используйте REST API Документы - Индекс с помощью удаления
@search.action, чтобы удалить его из индекса поиска. Сформулируйте вызов POST, указывающий имя индекса и конечную точкуdocs/index.Убедитесь, что текст запроса содержит ключи всех документов, которые вы хотите удалить.
POST https://[service name].search.windows.net/indexes/hotels-sample/docs/index?api-version=2025-09-01 Content-Type: application/json api-key: [admin key] { "value": [ { "@search.action": "delete", "id": "doc1" }, { "@search.action": "delete", "id": "doc2" } ] }
Ограничения пакетов: Рекомендуется ограничивать пакеты до 1000 документов или примерно 16 МБ на запрос, чтобы обеспечить оптимальную производительность.
Идемпотентность: удаление является идемпотентным; Если вы пытаетесь удалить идентификатор документа, который не существует, API по-прежнему возвращает состояние 200 OK.
Задержка. Документы не всегда удаляются мгновенно из хранилища. Фоновый процесс выполняет физическое удаление каждые несколько минут.
Хранилище векторов: удаление документов не сразу освобождает квоты хранилища векторов. Для физического удаления требуется несколько минут. Для немедленного восстановления пространства векторов может потребоваться удалить и перестроить индекс.
Reference:Documents — Index
Проверка удаления документов
После удаления документов убедитесь, что удаление выполнено успешно.
- На портале Azure откройте страницу обзора службы поиска.
- Выберите управление поиском>индексы.
- Проверьте столбец количество документов для вашего индекса.
- Подождите несколько минут и обновите, если число не изменилось (удаление асинхронно).
Удаление документа не сразу освобождает место в индексе. Каждые несколько минут фоновый процесс выполняет физическое удаление. Независимо от того, используется ли портал Azure или API получения статистики статистики для возврата статистики индекса, вы можете ожидать небольшую задержку, прежде чем удаление будет отражено на портале Azure и метриках API.
Устранение неполадок с удалением документов
В следующей таблице перечислены распространенные проблемы при удалении документов и их устранении.
| Проблема | Причина | Резолюция |
|---|---|---|
| Количество документов без изменений | Удаление асинхронно. Фоновый процесс выполняется каждые несколько минут. | Подождите 2–3 минуты и обновите. Снова проверьте статистику индекса. |
| 400 Недопустимый запрос | Недопустимый ключ документа или неправильный текст запроса. | Убедитесь, что имя поля ключа документа соответствует схеме индекса. Проверьте синтаксис JSON. |
| 403 Запрещено | Недостаточно разрешений. | Используйте ключ API администратора или убедитесь, что ваше удостоверение имеет роль участника данных поискового индекса. |
| 404 Не найдено в индексе | Неправильное имя индекса или не существует. | Проверьте имя индекса в URL-адресе запроса. |
| Хранилище не восстановлено для повторного использования | Физическое удаление выполняется асинхронно в фоновом режиме. | Подождите несколько минут. Для немедленного восстановления векторного хранилища удалите и перестроите индекс. |
| Потерянные документы остаются | Исходные документы были удалены до запуска индексатора, обнаруживающего удаление. | Вручную удалите потерянные документы с помощью ключей документов. |