Algolia Firestore Sync - 大型数据集 - 快速变化
Algolia Firestore Sync - Large Dataset - Rapid Changes
我正在使用 Algolia 对 Firestore 集合进行全文搜索。从搜索的角度来看,它非常有效。
我正在使用 Cloud Functions 同步数据 - 遵循许多博客文章中的模式:我使用 Firestore .onCreate()
.onUpdate()
和 .onDelete()
挂钩提示更新到阿尔及利亚指数。
例如
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 });
});
这适用于不频繁的单独更新,但在频繁更新 and/or 批次时会失败(例如,在集合中所有记录的循环中)。这是一个 known issue:
Cloud Firestore triggers for Cloud Functions is a beta feature with
some known limitations:
- It can take up to 10 seconds for a function to respond to changes in
- Cloud Firestore. Ordering is not guaranteed. Rapid changes can trigger
function invocations in an unexpected order.
新的 Algolia extension for Firebase appears to use the same pattern:具体来说,它利用 Cloud Functions 和 .onWrite()
挂钩。
它似乎也受到相同的限制:当我创建并几乎立即更新大约 3,000 个文档时,并非所有记录都被复制到我的 Algolia 索引中,并且几乎 none 的更新已注册。
在这些情况下,即频繁/快速更改大量数据时,是否有办法将 Algolia 与 Firestore 集合同步?或者有什么方法可以限制这个过程?
由于无法保证执行顺序,因此很难找到编写此特定函数的方法。但我可以想出一些解决您遇到的问题的方法:
- 听起来你只是在创建后才快速更新?在这种情况下,也许可以让您的
create
写入草稿集合并让您的 update
将更新的数据复制到可搜索的集合中。
- 不是更新,而是添加带有时间戳的新文档并在查询时过滤结果。
- 如果您的客户可以容忍陈旧的数据,您可以使用计划功能将所有文档与 Algolia 同步。
我正在使用 Algolia 对 Firestore 集合进行全文搜索。从搜索的角度来看,它非常有效。
我正在使用 Cloud Functions 同步数据 - 遵循许多博客文章中的模式:我使用 Firestore .onCreate()
.onUpdate()
和 .onDelete()
挂钩提示更新到阿尔及利亚指数。
例如
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 });
});
这适用于不频繁的单独更新,但在频繁更新 and/or 批次时会失败(例如,在集合中所有记录的循环中)。这是一个 known issue:
Cloud Firestore triggers for Cloud Functions is a beta feature with some known limitations:
- It can take up to 10 seconds for a function to respond to changes in
- Cloud Firestore. Ordering is not guaranteed. Rapid changes can trigger function invocations in an unexpected order.
新的 Algolia extension for Firebase appears to use the same pattern:具体来说,它利用 Cloud Functions 和 .onWrite()
挂钩。
它似乎也受到相同的限制:当我创建并几乎立即更新大约 3,000 个文档时,并非所有记录都被复制到我的 Algolia 索引中,并且几乎 none 的更新已注册。
在这些情况下,即频繁/快速更改大量数据时,是否有办法将 Algolia 与 Firestore 集合同步?或者有什么方法可以限制这个过程?
由于无法保证执行顺序,因此很难找到编写此特定函数的方法。但我可以想出一些解决您遇到的问题的方法:
- 听起来你只是在创建后才快速更新?在这种情况下,也许可以让您的
create
写入草稿集合并让您的update
将更新的数据复制到可搜索的集合中。 - 不是更新,而是添加带有时间戳的新文档并在查询时过滤结果。
- 如果您的客户可以容忍陈旧的数据,您可以使用计划功能将所有文档与 Algolia 同步。