0

我正面临一个我还无法解决的复杂问题。

我将 Rails 4(edge) 与 postgresql 9、ElasticSearch 0.20.6 和 gem Tire (0.5.7) 一起使用。我有多个链接在一起的表。例如:

代理机构有很多客户客户有很多项目项目有很多文件

我的目标是能够以两种方式索引文件:

  • 首先有一个索引,它只允许在所有文件中轻松快速地搜索。我仅通过使用轮胎就成功地做到了。我的索引有一个类型“文件”,它就像一个魅力。
  • 我想创建的另一个索引将包含一些文件信息,还有一些客户端和代理的属性。这是一个外部工具,能够根据项目类别或客户位置等标准获取最佳文件......

当我使用 postgresql 时,我想我可以从那里做一个数据库视图和索引数据。我不确定这样做是否很好,尽管因为视图会非常复杂,有多个连接。另外,我担心任何更新都会触发完整的数据库重新索引。

我想知道是否有办法做一个纯轮胎模型并轻松触发它的任何链接表上的索引更新。例如,我将索引数据类型命名为files_front. 我会有一个模型FilesFronthas_one :file每次我更新文件或任何父文件时,所有受影响的文件都会在 ES 中看到它们的值更新。

我真的不确定如何做到这一点,所以欢迎任何建议。

4

1 回答 1

1

拥有一个单独的、无表的或独立的模型是一个很好的解决方案。我认为这里的问题是将FileFront类连接到系统的其余部分。实际上,每当您更新File或任何关联的Client等对象时,您都需要更新该FileFront对象。

您实际上可以使用Model::Persistence。因此,对于每个File您都有一个关联FrontFile的 ,您可以将其组装为 JSON并在回调中File创建/更新。after_save棘手的部分是确保对父对象的更改传播到文件,反之亦然。

于 2013-04-24T15:07:15.617 回答