在Azure搜索上载文档后,可以查询吗?

时间:2019-05-06 21:00:27

标签: java c# azure azure-search

1)假设我使用Azure搜索API上传新文档:

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

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

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

我可以100%确定在结果中会得到文档吗?还是在索引编制过程中会有延迟?

1 个答案:

答案 0 :(得分:2)

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

Azure Search提供了eventual consistency,这意味着该索引在将来的某个时间会保持一致,但不能保证确切的时间。

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

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