我正面临一个我还无法解决的复杂问题。
我将 Rails 4(edge) 与 postgresql 9、ElasticSearch 0.20.6 和 gem Tire (0.5.7) 一起使用。
我有多个链接在一起的表。例如:
代理有很多客户
客户有很多项目
项目有很多文件
我的目标是能够以两种方式索引文件:
当我使用 postgresql 时,我想我可以 do a database view并从那里索引数据。我不确定这样做是否很好,尽管因为 View 会非常复杂,有多个连接。另外,我担心任何更新都会触发完整的数据库重新索引。
我想知道是否有办法做一个纯轮胎模型并轻松触发它的任何链接表上的索引更新。
例如,我将索引类型为
files_front
的数据。 .我会有一个模型FilesFront
其中has_one :file
每次我更新文件或任何父文件时,所有受影响的文件都会在 ES 中看到它们的值更新。我真的不确定如何做到这一点,所以欢迎任何建议。
最佳答案
拥有一个单独的、无表的或独立的模型是一个很好的解决方案。我认为这里的问题是连接 FileFront
类到系统的其余部分。实际上,每当您更新 File
或任何相关的Client
etc. 对象,您需要更新 FileFront
目的。
您实际上可以使用 Model::Persistence到那个。所以对于每个 File
你会有一个关联的 FrontFile
,您将在 File
中将其组装为 JSON并在 after_save
中创建/更新打回来。棘手的部分是确保对父对象的更改传播到文件,反之亦然。
关于ruby-on-rails - 创建一个无数据库的 rails 模型,作为在 elasticsearch 中索引数据的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15972942/