java - 在 Azure 搜索上上传文档后,我可以查询它吗?
问题描述
1) 假设我使用 Azure Search API 上传一个新文档:
POST /indexes/[index name]/docs/index?api-version=[api-version]
2) 我收到一个带有 HTTP 代码 201 的响应(文档已成功创建)
3)我再次使用API搜索新上传的文档
我可以 100% 确定我会在结果中获得文档吗?或者索引过程中是否存在延迟?
解决方案
不,不能保证文档会在查询中返回。通常的延迟大约为几秒钟,但根据整个系统负载,它可能需要更长的时间。您需要在您的服务上运行测试以找出应用程序中的典型延迟。
Azure 搜索提供最终一致性,这意味着索引将在未来某个时间保持一致,但不能保证准确的时间。
即使在文档出现在查询结果中之前轮询文档也不足以始终保证具有多个副本的索引的一致性,因为请求可以与合并到索引副本中的文档交错。例如
- 副本 A 和 B 是一致的
- 客户上传新文件
- 副本A收到上传请求
- 副本A处理上传请求并准备在查询结果中返回新文档
- 客户端查询恰好由副本 A 提供服务的新文档,并在结果中获取新文档
- 客户端再次查询新文档,这次恰好是副本B服务的,结果中没有得到新文档
- 新文档由副本 B 处理
- 两个副本现在再次一致
推荐阅读
- maven - graphqlcodegen 中具有不同配置的多次执行
- azure - 如何在 Cosmos 中结合 Distinct 和 Group by
- python - 如何在 oauth 2.0 上使用刷新令牌自动获取访问令牌
- apache-spark - Spark结构化流式作业:流静态连接未更新
- mongodb - 如何使用 MongoDB 聚合 $lookup 和 $addFields 比较字段并在匹配时返回值?
- reactjs - 如果我使用自定义道具,打字稿中的样式组件会抛出错误
- docker - docker compose:错误:无法选择包
- java - Springboot战争文件-上下文路径不适用于tomcat
- nestjs-jwt - nestjs:Jwt 策略中的有效载荷未定义
- android - Galaxy watch 4 将应用程序带回前台(以编程方式)