ruby-on-rails - 确保 ElasticSearch 与数据库同步

标签 ruby-on-rails ruby elasticsearch tire

我正在考虑一个日常脚本来执行以下操作,以便解决 ES 服务器上的更新出现问题的任何情况(我还没有高可用性设置,即便如此,它也是如此)在 DB 和 ES 之间复制数据的情况下仍然可能是一个很好的做法)。在将这个脚本放在一起之前,我想我应该检查一下我是否以正确的方式进行此操作,以及是否有任何我应该使用的库或技术。

该脚本将简单地从数据库中检索所有 ID 以及从 ElasticSearch 中检索所有 ID,其中 created_at < current_time (当前时间的快照,因为它是脚本运行时移动的目标)。然后它会根据这些 ID 集之间的差异向 Elastic search 添加和删除。

这听起来是一个合理的方法吗?

最佳答案

回答我的问题,这不是最好的方法。

一种更简单但更耗费资源的方法是定期重建整个索引。当然,这在生产中很难做到,因为这会导致几分钟或几小时的停机时间,因此技巧是重建一个新索引并改用它。在 ElasticSearch 中,您无法重命名索引,但可以使用别名。

有一个关于该方法的讨论 here以及 Tire 用户的 rake 任务 here .

关于ruby-on-rails - 确保 ElasticSearch 与数据库同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11952558/

相关文章:

elasticsearch - 如何编写一个渗滤器查询嵌套程序

ruby-on-rails - Ruby on Rails : Is there a method to retrieve an array of data from the database without Rails needing to instantiate anything?

jquery - 查找集中表的左边距值

ruby-on-rails - rbenv 版本 2.2.1 未安装,即使它是

ruby-on-rails - Standalone ruby​​ -- 如何从database.yml加载不同环境

elasticsearch - 如何查看 ElasticSearch 索引的内容?

java - 用于字段查询的 Elastic search 高级客户端等效项

ruby-on-rails - 减少数据库查询

ruby-on-rails - 如何安装和使用将在 Rails View 中使用的新字体?

ruby - Aptana Studio 3 的新安装无法找到 JNI 共享库