我在使用 Laravel Scout 和 Algolia 时遇到问题:执行
php artisan scout:import "App\Models\Product"
会导致 Algolia 索引在重新导入之前首先清除所有产品。
是否有一种方法可以重新导入产品,以便覆盖现有产品而不是先清除索引?
我的目标是在产品数据或配置更新期间最大限度地减少与 Algolia 链接的搜索服务的停机时间。
我尝试通过开发单独更新产品的命令来解决此问题。但由于处理速度慢,这种方法被证明效率低下。此外,我还发现了 Algolia 的问题,它引发了有关个人更新数量限制的投诉。
Algolia 的 Scout Extended 软件包包含一个
scout:reimport
命令,可以执行您正在寻找的零停机数据替换:零停机重新导入。
在生产环境中工作时,您希望在重新导入数据时保持现有的搜索体验可用。您可以使用 scout:reimport Artisan 命令来执行此操作:
php artisan scout:reimport
为了确保在重建期间不会中断索引上发生的搜索,Scout Extended 使用临时索引来导入所有记录,然后再将其移动到生产索引。
警告:通过此操作,您的应用程序的记录数暂时增加了一倍。请验证您的计划是否包含足够的可用记录来执行此操作。