发布到索引时 Azure 搜索数据的一致性
Azure Search data consistency when posting to index
我想了解 Azure 搜索提供的一致性保证。
场景:
假设我按顺序将文档发布到 Azure 搜索 REST API:
- doc1
- doc2
- doc3
问题
- 我发出查询并返回 doc3。这是否意味着 doc1 和 doc2 也存在于索引中?例如,我是否应该担心数据复制尚未完成等问题?
- 如果 POST 请求 returns,是否 100% 保证发布的文档可供搜索,因此任何客户端查询索引都会立即找到?
- 与一致性相关的任何行为是否取决于所使用的层?
1) Azure 搜索保证最终所有文档都会显示,但读者不会看到它们按顺序显示(无单调读取)。
2) 不。如果您从索引请求中看到 HTTP 状态 200,这意味着数据是持久的(我们不会丢失它)但不是可搜索的。可能需要几秒钟才能搜索到,具体取决于负载。
3) 所有层都公开最终一致性模型。由于数据分区方式的差异,层之间的典型 timings/sequence 可能存在细微差异,但这些差异是可变的,因此您不应依赖这些差异。
我想了解 Azure 搜索提供的一致性保证。
场景: 假设我按顺序将文档发布到 Azure 搜索 REST API:
- doc1
- doc2
- doc3
问题
- 我发出查询并返回 doc3。这是否意味着 doc1 和 doc2 也存在于索引中?例如,我是否应该担心数据复制尚未完成等问题?
- 如果 POST 请求 returns,是否 100% 保证发布的文档可供搜索,因此任何客户端查询索引都会立即找到?
- 与一致性相关的任何行为是否取决于所使用的层?
1) Azure 搜索保证最终所有文档都会显示,但读者不会看到它们按顺序显示(无单调读取)。
2) 不。如果您从索引请求中看到 HTTP 状态 200,这意味着数据是持久的(我们不会丢失它)但不是可搜索的。可能需要几秒钟才能搜索到,具体取决于负载。
3) 所有层都公开最终一致性模型。由于数据分区方式的差异,层之间的典型 timings/sequence 可能存在细微差异,但这些差异是可变的,因此您不应依赖这些差异。