2013-04-12 39 views
0

我正面臨一個複雜的問題,我還沒有解決。創建一個無數據庫軌道模型,可以作爲索引elasticsearch中的數據的視圖

我使用Rails 4(邊緣)與postgresql 9,ElasticSearch 0.20.6和寶石輪胎(0.5.7)。 我有多個錶鏈接在一起。例如:

局有許多客戶 客戶有許多項目 項目有許多文件

這裏我的目標是能夠索引文件有兩種方式:

  • 首先有一個索引只是允許在所有文件中輕鬆快速搜索。我只用輪胎就成功了。我的索引有一個「文件」類型,它就像一個魅力。
  • 我想創建的其他索引將包含一些文件信息,但也包括一些客戶端和agencie的屬性。這是一個外部工具,將能夠根據像項目的類別或客戶端的位置條件,以獲取最佳的文件...

,因爲我使用PostgreSQL,我想我可以do a database view和索引來自那裏的數據。我不確定這樣做很好,儘管由於多個連接而導致視圖非常複雜。另外,我擔心任何更新都會觸發全數據庫重新索引。

我想知道是否有辦法做一個純輪胎模型,並輕鬆觸發任何鏈接表上的索引更新。例如,我將索引一個名爲files_front的數據。我將有一個模型FilesFront其中has_one :file和每次我更新一個文件或任何父母,所有受影響的文件將看到他們的值在ES中更新。

我真的不知道如何做到這一點,所以任何建議是值得歡迎的。

回答

1

有一個單獨的,無表或獨立模型是一個很好的解決方案。我假設這裏的問題是將FileFront類連接到系統的其他部分。實際上,無論何時更新File或任何關聯的Client等對象,都需要更新FileFront對象。

你實際上可以使用Model::Persistence來做到這一點。因此,對於每個File,您都會有一個關聯的FrontFile,您將在File中彙編爲JSON,並在after_save回調中創建/更新。棘手的部分是確保對父對象的更改傳播到文件,反之亦然。

相關問題