Azure 搜索索引器的速度有多快?我如何才能更快地编制索引?

How fast is Azure Search Indexer and how I can index faster?

每个索引批次限制为 1 到 1000 个文档。当我从我的本地机器或 Azure VM 调用它时,每 1000 个文档批处理需要 800 毫秒到 3000 毫秒。如果我用async提交多批,花费的时间大致相同。这意味着我的 ~50M 文档收集需要 15 - 20 个小时。

有没有办法让它更快?

我认为您已达到请求容量:

https://azure.microsoft.com/en-us/documentation/articles/search-limits-quotas-capacity/

我会尝试另一层 (s1, s2)。如果您仍然遇到同样的问题,请尝试与支持团队联系。

另一个选项:

不要推送数据,而是尝试将数据添加到 blob 存储、documentDb 或 Sql 数据库,然后使用拉取方法:

https://azure.microsoft.com/en-us/documentation/articles/search-howto-indexing-azure-blob-storage/

您似乎在使用我们的标准 S1 搜索服务,尽管有很多因素会影响数据的摄取速度。对于一个平均索引,我希望看到单个分区搜索服务的摄取速度约为 700 个文档/秒,因此我认为您的数字与我的预期相差不远,尽管请注意 这些纯粹是粗略的估计,您可能会根据许多因素(例如字段数、分面数量等)看到不同的结果。

您看到的一些额外时间可能是由于将内容从本地计算机上传到 Azure 的延迟所致,如果您直接从 Azure 执行此操作可能会更快,但如果这是只是一次性上传,可能不值得付出努力。

您可以通过增加分区数量来稍微提高数据摄取速度,S2 搜索服务也会更快地摄取数据。虽然这两者都是有代价的。

顺便说一下,如果您有 50M 的文档,请确保您分配了足够的分区,因为单个 S1 分区可以处理 15M 的文档或 25GB,因此您肯定需要额外的分区来使用此服务。

另请注意,当您上传内容时(特别是如果您选择并行上传),请留意 HTTP 响应,因为如果搜索服务超出可用资源,您可能会收到 HTTP 207 (表示一个或多个项目应用失败)或 503 表示整个批次因节流而失败。如果发生节流,您可能希望退后一点以使服务跟上。