我有一个Azure搜索索引,其中包含超过100,000个文档。它有两个可检索字段,它们都是第三方确定的任意字符串ID。它具有更多可搜索和可排序的字段。
我需要能够检索索引中的每个文档。我的应用程序的使用者可能没有提供过滤器,因此没有超过10万个文档。
我可以应付$top=1000
的局限性,但是无论我做什么,$skip=100000
的局限性一直困扰着我。我正在使用.NET Core SDK的v10.1.0。我删除了汇总结果的代码,这仅显示了我的循环。
var results = index.Documents.Search("*", searchParameters: new SearchParameters
{
Top = int.MaxValue // I should have fewer than 2B docs...
});
while (results.ContinuationToken != null)
{
results = index.Documents.ContinueSearch(results.ContinuationToken);
}
一旦获得101k的结果(前1k并跳过100k),它将停止或崩溃,具体取决于我在ContinueSearch
通话中使用的防护栏类型。
我还通过HTTP尝试了此方法,结果基本相同。
我愿意接受任何针对.NET Core 3.1的解决方案。只要能正常工作,我就不会嫁给任何特定的软件包或语言。