我对 Azure 搜索服务非常陌生,我正在按照我在 Web 上找到的指南进行操作。在其中一个指南中,他们有这样的方法:
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.有没有比只删除索引更好的方法。如果有更新的方法,你如何处理文档结构发生变化的场景,例如添加了一个新字段。
莫回无
相关分类