每个索引批次限制为1到1000个文档。当我从本地计算机或azure VM调用它时,每1000个doc批处理我得到800毫秒到3000毫秒。如果我使用异步提交多个批次,则花费的时间大致相同。这意味着我的~50M文档集需要15到20个小时。
有没有办法让它更快?
答案 0 :(得分:4)
看起来您正在使用我们的标准S1搜索服务,尽管有很多因素会影响数据摄取的速度。我希望以平均指数大约700 docs /秒的速度看到单个分区搜索服务,所以我认为你的数字与我的预期差不多,虽然请注意这些是纯粹的粗略估计,您可能会根据任意数量的因素(例如字段数,方面数量等)看到不同的结果。
您可能会看到一些额外的时间是由于将内容从本地计算机上传到Azure的延迟,如果您直接从Azure执行此操作可能会更快,但如果这只是一个一次上传可能不值得努力。
您可以通过增加分区数量来略微提高数据摄取速度,S2 Search Service也可以更快地提取数据。虽然这些都需要付出代价。
顺便说一句,如果您有50 M文档,请确保分配足够的分区,因为单个S1分区可以处理15M文档或25GB,因此您肯定需要额外的分区来支持此服务。
另外另外注意,当您上传内容时(特别是如果您选择进行并行上传),请密切关注HTTP响应,因为如果搜索服务超出可用资源,您可以获得HTTP 207(表示一个或多个项目未能应用)或503表示整个批次因节流而失败。如果发生限制,你可能需要退一步让服务赶上来。
答案 1 :(得分:0)
我认为您已达到请求容量:
https://azure.microsoft.com/en-us/documentation/articles/search-limits-quotas-capacity/
我会尝试另一层(s1,s2)。如果您仍面临同样的问题,请尝试与支持团队联系。
另一种选择:
尝试将数据添加到blob存储,documentDb或Sql数据库,而不是推送数据,然后使用pull方法:
https://azure.microsoft.com/en-us/documentation/articles/search-howto-indexing-azure-blob-storage/