我对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.是否有比删除索引更好的方法?如果有更新的方法,那么如何处理文档结构已经更改的场景,例如添加了一个新字段。
发布于 2018-09-10 05:20:31
该示例旨在演示如何通过.NET SDK调用Azure搜索。不应将其作为最佳做法的范例。
要回答你的具体问题:
https://stackoverflow.com/questions/52249823
复制相似问题