【问题标题】:Azure Search Service Deleting an IndexAzure 搜索服务删除索引
【发布时间】:2019-02-14 10:01:45
【问题描述】:

我对 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.有没有比只删除索引更好的方法。如果有更新的方法,您如何处理文档结构发生变化的情况,例如添加了新字段。

【问题讨论】:

    标签: c# azure search azure-cognitive-search


    【解决方案1】:

    该示例旨在演示如何通过 .NET SDK 调用 Azure 搜索。它不应被视为最佳实践的示例。

    回答您的具体问题:

    1. 删除索引将立即导致针对该索引的所有请求失败。您不应删除生产中的实时索引。此外,还没有索引的备份/恢复功能,因此即使索引不存在,也不应该删除它,除非您可以从其他地方恢复数据。
    2. 如果您需要在不更新索引架构的情况下更新文档,您可以通过索引 API 的“合并”操作来实现。有一个教程涵盖了这个here。如果您需要添加新字段,您可以在不删除和重新创建索引的情况下执行此操作 - 只需使用 .NET SDK 的 Indexes.CreateOrUpdate 方法之一。默认情况下,此操作不会导致任何索引停机。但是,如果您需要删除、重命名或更改现有字段的类型,或在字段上启用新行为(例如,使其可分面、可排序或成为建议者的一部分),则需要创建一个新索引。因此,建议您的应用在索引名称上实现一个额外的间接层,以便您可以在需要时交换和重新构建索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 2018-12-14
      • 2016-12-12
      • 2022-01-15
      • 2019-05-08
      • 2019-03-01
      相关资源
      最近更新 更多