- 父-子關(guān)系文檔
父子關(guān)系文檔在實(shí)質(zhì)上類(lèi)似于nested model:允許將一個(gè)實(shí)體對(duì)象與另一個(gè)實(shí)體對(duì)象關(guān)聯(lián)起來(lái)。而這兩種類(lèi)型的主要區(qū)別是:在nested objects文檔中,所有對(duì)象都是在同一個(gè)文檔中,而在父子關(guān)系文檔中,父對(duì)象和子對(duì)象都是完全獨(dú)立的文檔。
更新父文檔時(shí),不會(huì)重新索引子文檔
創(chuàng)建,修改或者刪除子文檔時(shí),不會(huì)影響父文檔。這一點(diǎn)在這種場(chǎng)景下尤其有用:子文檔數(shù)量較多,并且子文檔創(chuàng)建和修改的頻率較高。
子文檔可以作為搜索結(jié)果獨(dú)立返回。 父子文檔關(guān)聯(lián)查詢(xún)操作較快。但是父子文檔關(guān)系有個(gè)限制條件:父文檔和其所有子文檔都必須要存儲(chǔ)在同一個(gè)分片中。 父子文檔ID映射存儲(chǔ)在Doc Values中。當(dāng)映射完全在內(nèi)存中時(shí),Doc Values提供對(duì)映射的快速處理能力,另一方面當(dāng)映射非常大時(shí),可以通過(guò)溢出到磁盤(pán)提供足夠的擴(kuò)展能力。 如果你想改變一個(gè)子文檔的parent值,僅通過(guò)更新這個(gè)子文檔是不夠的,因?yàn)樾碌母肝臋n有可能在另外一個(gè)分片上。因此,你必須要先把子文檔刪除,然后在重新索引這個(gè)子文檔。