发布到索引时 Azure 搜索数据的一致性

Azure Search data consistency when posting to index

我想了解 Azure 搜索提供的一致性保证。

场景: 假设我按顺序将文档发布到 Azure 搜索 REST API:

  1. doc1
  2. doc2
  3. doc3

问题

  1. 我发出查询并返回 doc3。这是否意味着 doc1doc2 也存在于索引中?例如,我是否应该担心数据复制尚未完成等问题?
  2. 如果 POST 请求 returns,是否 100% 保证发布的文档可供搜索,因此任何客户端查询索引都会立即找到?
  3. 与一致性相关的任何行为是否取决于所使用的层?

1) Azure 搜索保证最终所有文档都会显示,但读者不会看到它们按顺序显示(无单调读取)。

2) 不。如果您从索引请求中看到 HTTP 状态 200,这意味着数据是持久的(我们不会丢失它)但不是可搜索的。可能需要几秒钟才能搜索到,具体取决于负载。

3) 所有层都公开最终一致性模型。由于数据分区方式的差异,层之间的典型 timings/sequence 可能存在细微差异,但这些差异是可变的,因此您不应依赖这些差异。