Есть ли простой способ удалить все документы (или отфильтрованный список или документы) из индекса поиска Azure?Как удалить все документы в индекс
Я знаю, что явный ответ - удалить и воссоздать индекс, но мне интересно, есть ли другой вариант.
Есть ли простой способ удалить все документы (или отфильтрованный список или документы) из индекса поиска Azure?Как удалить все документы в индекс
Я знаю, что явный ответ - удалить и воссоздать индекс, но мне интересно, есть ли другой вариант.
Нет, в настоящее время нет способа удалить все документы из индекса. Как вы подозревали, что удаление и повторное создание индекса - это путь. Для действительно небольших индексов вы можете рассмотреть возможность удаления документов по отдельности, но при условии, что в приложениях уже есть код для создания индекса, delete/rereate - самый быстрый путь.
Существует способ: запросить все документы и использовать IndexBatch для удаления этих парней.
public void DeleteAllDocuments()
{
// Get index
SearchIndexClient indexClient = new SearchIndexClient(SearchServiceName, SearchServiceIndex, new SearchCredentials(SearchServiceQueryApiKey));
// Query all
DocumentSearchResult<Document> searchResult;
try
{
searchResult = indexClient.Documents.Search<Document>(string.Empty);
}
catch (Exception ex)
{
throw new Exception("Error during AzureSearch");
}
List<string> azureDocsToDelete =
searchResult
.Results
.Select(r => r.Document["id"].ToString())
.ToList();
// Delete all
try
{
IndexBatch batch = IndexBatch.Delete("id", azureDocsToDelete);
var result = indexClient.Documents.Index(batch);
}
catch (IndexBatchException ex)
{
throw new Exception($"Failed to delete documents: {string.Join(", ", ex.IndexingResults.Where(r => !r.Succeeded).Select(r => r.Key))}");
}
}
Было бы здорово, если бы вы могли бы добавить это в качестве пункта нашей странице UserVoice (http://feedback.azure.com/forums/263029-azure-search), как мы уже слышали этот вопрос несколько раз и было бы очень полезно отслеживать важность этого для вас самих и других, учитывая обход Пабло. Один из вариантов, который мы могли бы рассмотреть, - также разрешить удаление фильтра $ filter, чтобы вы могли не только удалить все документы, но и конкретные документы. –