Azure搜索服务删除索引

问题描述 投票:0回答:1

我是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.有没有比删除索引更好的方法。如果有更新方法,您如何处理文档结构已更改的方案,例如添加新字段。

c# azure search azure-search
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.