首页 > 解决方案 > 在 Azure 搜索上上传文档后,我可以查询它吗?

问题描述

1) 假设我使用 Azure Search API 上传一个新文档:

POST /indexes/[index name]/docs/index?api-version=[api-version]  

2) 我收到一个带有 HTTP 代码 201 的响应(文档已成功创建)

3)我再次使用API​​搜索新上传的文档

我可以 100% 确定我会在结果中获得文档吗?或者索引过程中是否存在延迟?

标签: javac#azureazure-cognitive-search

解决方案


不,不能保证文档会在查询中返回。通常的延迟大约为几秒钟,但根据整个系统负载,它可能需要更长的时间。您需要在您的服务上运行测试以找出应用程序中的典型延迟。

Azure 搜索提供最终一致性,这意味着索引将在未来某个时间保持一致,但不能保证准确的时间。

即使在文档出现在查询结果中之前轮询文档也不足以始终保证具有多个副本的索引的一致性,因为请求可以与合并到索引副本中的文档交错。例如

  1. 副本 A 和 B 是一致的
  2. 客户上传新文件
  3. 副本A收到上传请求
  4. 副本A处理上传请求并准备在查询结果中返回新文档
  5. 客户端查询恰好由副本 A 提供服务的新文档,并在结果中获取新文档
  6. 客户端再次查询新文档,这次恰好是副本B服务的,结果中没有得到新文档
  7. 新文档由副本 B 处理
  8. 两个副本现在再次一致

推荐阅读