【问题标题】:Firestore (update, delete, add) trigger to create Algolia Index takes too longFirestore(更新、删除、添加)触发器创建 Algolia 索引需要太长时间
【发布时间】:2021-07-16 15:52:00
【问题描述】:

我正在使用 Algolia 和 Firebase 构建一个应用程序。

为了使用 Algolia,我使用了以下 firebase extension,这样每次向 Firestore 添加、编辑、更新新数据时,Algolia 中都会保留相同的记录。

一切都很好,除了在 Algolia 中存储记录大约需要 1-2 分钟(目前大约有 15000 多条记录)。

我目前正在直接从 Algolia 读取和显示数据,并在数据发生更改时对其进行更新。然而,等待 1-2 分钟才能让用户最终看到更新的详细信息似乎很荒谬。

我使用 Algolia 是因为我需要更灵活的搜索选项 + 页面偏移分页。如果我可以只使用 firestore 来做到这一点,我会很乐意直接从 firestore 读取数据。

但既然这是不可能的谁能看到更好的选择?

我已经尝试编写自定义触发器而不是扩展,但速度似乎是一样的。

【问题讨论】:

  • 您是说您的云功能需要 2 分钟才能在 Algolia 中添加数据,还是 Algolia 需要时间来索引它们?
  • 数据成功添加到 firestore 后,需要 1-2 分钟才能被索引并存储在 Algolia 中。因此,我无法搜索或查看在那之前的数据。

标签: javascript reactjs firebase google-cloud-firestore algolia


【解决方案1】:

这似乎是预期的行为。 Algolia 的文档有一个专门针对该主题的页面:
Why aren't my objects immediately available for search after being added?

当您添加或更新记录时,我们的服务器会在了解操作后立即回复您的请求,但实际索引会在几秒钟后以异步方式开始。

他们还说,新文档可能需要几秒钟(或几分钟)才能提供。您可以阅读有关how fast is the indexing? 的更多信息。它说,共享集群上的索引可能会更慢。升级到专用集群可能会有所帮助。话虽如此,索引所花费的时间并不取决于您是使用扩展、自定义云功能还是您自己的服务器在 Algolia 中添加数据。

【讨论】:

  • 如果没有错误,您认为在客户端手动更新数据并使其看起来像已更新,或者我应该让它们挂起 1-2 分钟是个好主意吗?跨度>
  • @Min 手动更新客户端数据是什么意思?我不确定你在那里有什么样的搜索。但我不认为一分钟或两分钟是一个很大的持续时间。您可以添加一条通知,“您的更新可能需要一两分钟才能显示在搜索中”或类似内容。
  • 我不仅使用 Algolia 进行搜索,而且还从 Algolia 检索整个数据集。例如,我不是从 Firestore 而是从 Algolia 读取了 15000 多个数据用户记录的列表。我主要关心的不是搜索,而是当我更新、删除、添加用户记录时。如果我添加一条新记录,它会立即存储在 firestore 中,但不会存储在 Algolia 中。因此,在那之前我无法获取新添加的用户记录。所以我想做的是因为我已经在没有新记录的情况下获取了数据,所以我只是添加新记录,假设它将成功存储在 Algolia 中。
  • @Min 如果搜索不是问题,那么如果我假设您的数据集是一个对象数组,那么当用户添加新文档时,只需将该新文档对象推送到本地的该数据集数组中。那会很完美。希望下次刷新后从 Algolia 加载数据集时,新文档会在那里 :)
  • @Min 我真的看不出有什么问题。但是,如果您需要让许多用户都可以使用该数据,那么您应该考虑在所有客户端中添加一个 Firestore 侦听器,以便他们直接从 Firestore 接收该新数据的副本。如果数据仅限于该用户,则无需担心。
猜你喜欢
  • 2014-12-08
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多