【发布时间】:2021-08-21 23:41:18
【问题描述】:
我正在使用 Algolia 对 Firestore 集合进行全文搜索。从搜索角度来看,它的效果非常好。
我正在使用 Cloud Functions 同步数据 - 遵循许多博文中的模式:我使用 Firestore .onCreate() .onUpdate() 和 .onDelete() 挂钩来提示更新 Algolia 索引。
例如
exports.update_products_index = functions.firestore.document('products/{productId}').onUpdate((change) => {
const algolia_index = client.initIndex("products");
const newData = change.after.data();
const objectID = change.after.id;
return algolia_index.saveObject({ ...newData, objectID });
});
这适用于不频繁的单独更新,但会因频繁更新和/或批量更新而失败(例如,在集合中所有记录的循环中)。这是known issue:
Cloud Functions 的 Cloud Firestore 触发器是一项测试版功能,具有 一些已知的限制:
- 函数最多可能需要 10 秒才能响应更改
- 云 Firestore。不保证订购。快速变化可以触发 以意外的顺序调用函数。
Firebase 的新 Algolia extension 似乎使用了 same pattern:具体来说,它利用了 Cloud Functions 和 .onWrite() 挂钩。
它似乎也受到同样的限制:当我创建并几乎立即更新大约 3,000 个文档时,并非所有记录都复制到我的 Algolia 索引中,并且几乎没有任何更新被注册。
在这种情况下,即频繁/快速更改大量数据集,是否有办法将 Algolia 与 Firestore 集合同步?或者有没有办法限制这个过程?
【问题讨论】:
标签: google-cloud-firestore google-cloud-functions algolia