C# 使用C语言的Azure搜索索引重建策略#

C# 使用C语言的Azure搜索索引重建策略#,c#,indexing,azure-cognitive-search,C#,Indexing,Azure Cognitive Search,我有一个Azure搜索,每5分钟对Azure存储进行一次索引。由于存储可能也有局部删除,所以我正在寻找一种处理这些删除的方法。从文档中我了解到,除非手动删除索引或重建索引 一个完整的重建就可以了,但我想把停机时间降到最低限度。我在寻找这样做的策略。现在我想建立第二个索引,一旦建立起来,就删除旧的索引;不过,这感觉有点笨拙,因为我必须跟踪索引名 现在看起来是这样的(简化): 从文档中可以看出,默认情况下为您启用了增量索引: 此外,您还可以使用“软删除”选项,以防这些已删除的文件可能会在某个时间重

我有一个Azure搜索,每5分钟对Azure存储进行一次索引。由于存储可能也有局部删除,所以我正在寻找一种处理这些删除的方法。从文档中我了解到,除非手动删除索引或重建索引

一个完整的重建就可以了,但我想把停机时间降到最低限度。我在寻找这样做的策略。现在我想建立第二个索引,一旦建立起来,就删除旧的索引;不过,这感觉有点笨拙,因为我必须跟踪索引名

现在看起来是这样的(简化):


从文档中可以看出,默认情况下为您启用了增量索引:


此外,您还可以使用“软删除”选项,以防这些已删除的文件可能会在某个时间重新出现。

从文档中可以看出,默认情况下为您启用了增量索引:


此外,您还可以使用“软删除”选项,以防这些已删除的文件可能会在某个时间重新出现。

与您提到的场景类似,这可能很有用。此外,如果您希望Azure Search在将来支持硬删除的数据删除策略,如其他答案所述,今天推荐的策略是使用,因此,如果您可以重新构造删除的方式,那么这也是一个潜在的选择。

与您提到的场景类似,可能会很有用。此外,如果您希望Azure Search在将来支持硬删除的数据删除策略,如其他答案所述,今天推荐的策略是使用,因此,如果您可以重新构造删除的方式,那么这也是一个潜在的选择。

增量索引似乎只适用于新文件。
soft delete
选项在此上下文中不起作用,因为文件会立即被删除,无法重新处理。我确实想知道为什么文档要求为它设置一个单独的属性。已经有一个内置状态属性(在从Azure门户检查软删除文件的属性时),我似乎无法将其用于索引处的
软删除
选项。增量索引似乎只适用于新文件。
soft delete
选项在此上下文中不起作用,因为文件会立即被删除,无法重新处理。我确实想知道为什么文档要求为它设置一个单独的属性。已经有一个内置状态属性(当从Azure门户检查软删除文件的属性时),我似乎无法将其用于索引处的
软删除
选项。
//create new index
searchClient.Indexes.CreateOrUpdate(index);

//update indexer
var indexer = searchClient.Indexers.Get("testindexer");
indexer.TargetIndexName = index.Name;
searchClient.Indexers.CreateOrUpdate(indexer.Name);

//reset and run indexer
searchClient.Indexers.Reset(indexer.Name);
searchClient.Indexers.Run(indexer.Name);

//at this point the new index is used

//delete old index
searchClient.Indexes.Delete(oldIndex.Name);