【问题标题】:Can an Azure Search indexer overwrite updates posted through the API?Azure 搜索索引器能否覆盖通过 API 发布的更新?
【发布时间】:2018-12-19 22:55:08
【问题描述】:

我正在编写一个应用程序,我们通过调用 Azure 搜索 API 与一个元素的批次同步更新我们的数据(如 this answer 中所述)。作为备份,我们有一个每小时运行一次的search indexer。这样,如果通过 API 更新索引失败或者我们忘记在代码中触发它,更改最终将同步到搜索索引。

我的问题是:搜索索引器是否有可能像下面的场景那样覆盖 API 更新?

  1. 搜索索引器从数据库中复制一行
  2. 应用程序更新数据库中的同一行,然后通过 API 调用将其同步到搜索索引
  3. 搜索索引器根据数据的过期副本更新索引中的文档

【问题讨论】:

  • 您的“搜索索引器”是否是自定义任务,它通过 Azure 搜索 API 获取并发送记录?
  • 搜索索引器是一种特定于 Azure 的机制,用于检测数据库更改并更新索引。它不是我的应用程序的一部分。我刚刚用docs 的链接更新了问题,以使其更清晰
  • 虽然我没有具体的知识,但我很确定这是可能的。为了避免这个问题,Azure 需要同时锁定索引数据和数据库数据,然后在释放锁定之前更新索引。该系统不太可能以这种方式实施。分布式锁非常脆弱。

标签: c# azure azure-cognitive-search


【解决方案1】:

是的,在索引器更新文档和 API 调用更新文档之间当然可能存在竞争条件。您可以通过将 API 更新推迟到索引器完成运行后或仅使用一种机制(索引器 API)来缓解这种情况。

【讨论】:

    猜你喜欢
    • 2014-08-16
    • 2017-04-05
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    相关资源
    最近更新 更多