4

我正在使用Rails的輪胎寶石,並提出了一些關於模型關聯的問題。你如何與他們合作?假設你有一個人和一輛汽車之間的關係。每個人都有很多汽車。現在,如果你想索引汽車對象,你怎麼做?例如,如何通過搜索car.make來檢索某個人?如何使用elasticsearch和索引對象之間的關聯?

一般來說,我可以看到以文檔爲中心的elasticsearch沒有RDBMS具有的相同概念。一對一,一對多和多對多。

如果你有一個多對多的關係的例子,你想只有對象的關係的另一端的屬性將是不可能的?彈性搜索更適合於像MongoDB這樣的NoSQL數據庫嗎?

回答

4

有許多可能的策略如何在Elasticsearch中建模數據,包括關係。在Elasticsearch,有相關數據至少有三個策略:

  1. 只要使用JSON和它的能力,流利地表達層次,
  2. 對於其中Car實際上是汽車名單的情況下,使用嵌套類型,
  3. 在需要單獨爲兩個實體索引的情況下使用父/子支持。

隨着輪胎,首先檢查並嘗試在代碼中回答:Elasticsearch, Tire, and Nested queries/associations with ActiveRecord。它應該包含您的方案所需的所有信息。該代碼也可用separately

參考文獻:

+0

所以它實際上是可能的東印度一個模型關聯。我是否正確地將子對象存儲在與父母相同的類型中? Tire/elasticsearch是否會做一些神奇的事情來將它與它的父項聯繫起來,因此您沒有重複的父級文檔?而且,是否可以索引多對多的關係呢?在序列化之前,你是否查詢了你的對象? – LuckyLuke 2013-02-24 09:02:24

+0

我讀了關於在elasticsearch中管理關係的文章。他是否想要在同一個文檔中嵌入所有關係?這是最好的,你如何與蒂爾做到這一點? – LuckyLuke 2013-02-24 09:19:38

+0

我的建議是儘可能地「內聯」。輪胎尚未提供任何特殊的支持來建模與父母/子女的關係。 – karmi 2013-02-25 08:45:51

相關問題