在 Azure 搜索上上传文档后,我可以立即查询吗?
Right after uploading a document on Azure Search, can I query it?
1) 假设我使用 Azure 搜索 API 上传一个新文档:
POST /indexes/[index name]/docs/index?api-version=[api-version]
2) 我收到带有 HTTP 代码 201 的响应(文档已成功创建)
3) 我再次使用API搜索新上传的文档
我能 100% 确定我会在结果中得到文档吗?或者索引编制过程可能会有延迟?
不,不能保证文档会在查询中 returned。通常的延迟是几秒的数量级,但根据整体系统负载,它可能需要更长时间。您将需要 运行 测试您的服务以找出应用程序中的典型延迟。
Azure 搜索提供 ,这意味着索引将在未来的某个时间保持一致,但不能保证确切的时间。
即使轮询文档直到它出现在查询结果中也不足以始终保证具有多个副本的索引的一致性,因为请求可以与合并到索引副本中的文档交错。例如
- 副本A和B一致
- 客户上传新文件
- 副本A收到上传请求
- 副本A处理上传请求并准备return查询结果中的新文档
- 客户端查询新文档,恰好由副本A服务,并在结果中得到新文档
- client再次查询新文档,这次恰好由Replica B服务,结果没有得到新文档
- 新文档由副本 B 处理
- 两个副本现在再次一致
1) 假设我使用 Azure 搜索 API 上传一个新文档:
POST /indexes/[index name]/docs/index?api-version=[api-version]
2) 我收到带有 HTTP 代码 201 的响应(文档已成功创建)
3) 我再次使用API搜索新上传的文档
我能 100% 确定我会在结果中得到文档吗?或者索引编制过程可能会有延迟?
不,不能保证文档会在查询中 returned。通常的延迟是几秒的数量级,但根据整体系统负载,它可能需要更长时间。您将需要 运行 测试您的服务以找出应用程序中的典型延迟。
Azure 搜索提供
即使轮询文档直到它出现在查询结果中也不足以始终保证具有多个副本的索引的一致性,因为请求可以与合并到索引副本中的文档交错。例如
- 副本A和B一致
- 客户上传新文件
- 副本A收到上传请求
- 副本A处理上传请求并准备return查询结果中的新文档
- 客户端查询新文档,恰好由副本A服务,并在结果中得到新文档
- client再次查询新文档,这次恰好由Replica B服务,结果没有得到新文档
- 新文档由副本 B 处理
- 两个副本现在再次一致