Я очень новичок в службе поиска Azure и следую инструкциям, которые я нашел в Интернете. В одном из этих руководств у них есть такой метод:
static void Main(string[] args)
{
IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
IConfigurationRoot configuration = builder.Build();
SearchServiceClient serviceClient = CreateSearchServiceClient(configuration);
var test = serviceClient.Indexes.GetClient("testindex");
Console.WriteLine("{0}", "Deleting index...\n");
DeleteHotelsIndexIfExists(serviceClient);
Console.WriteLine("{0}", "Creating index...\n");
CreateHotelsIndex(serviceClient);
ISearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");
Console.WriteLine("{0}", "Uploading documents...\n");
UploadDocuments(indexClient);
ISearchIndexClient indexClientForQueries = CreateSearchIndexClient(configuration);
RunQueries(indexClientForQueries);
Console.WriteLine("{0}", "Complete. Press any key to end application...\n");
Console.ReadKey();
}
Таким образом, идея выше состоит в том, чтобы удалить индекс, если он существует, а затем создать новый индекс. Затем создайте и загрузите документы и, наконец, запустите поиск. Теперь все это имеет смысл для меня, как это работает, но одна вещь, которая меня беспокоит, это удаление части индекса. По сути, мне кажется, что они предлагают всегда удалять индекс, а затем воссоздавать его. Что меня беспокоит.
Если это живой индекс, то если я удалю его даже на долю секунды, не будет ли это означать, что службы, вызывающие поиск по этому индексу, не будут работать? Другая вещь, которая меня беспокоит, заключается в том, что в большинстве случаев мои данные будут на 90% одинаковыми, у меня будут некоторые обновления и новые записи, возможно, некоторые будут удалены. Но если в моей базе данных есть миллион записей, кажется глупым удалять все это, а затем создавать заново.
Есть ли лучший подход. Могу ли я просто обновить документы в индексе, а не удалять его?
Так что, я думаю, это вопрос из двух частей. 1. Если я удалю индекс, остановит ли он поиск во время создания нового? 2. Есть ли лучший подход, чем просто удаление индекса. Если есть способ обновления, как вы обрабатываете сценарии, в которых изменилась структура документа, например, добавлено новое поле.