Nested Objects 巢狀物件簡介

2021-07-25 14:49:50 字數 1076 閱讀 5712

put /my_index/blogpost/1

,

]}

如果我們使用動態對映,commets欄位將會被自動建立成乙個object物件型別的字段

由於所有的內容都在乙個文件中,所以在查詢的時候不需要對bolg posts和commets進行聯合查詢,搜尋效能也會更好

但是有時候會出現如下的乙個問題:

可以看到johnsimth和alicewhite都被搜尋了出來,因為john的age與搜尋條件中的age為28匹配,alice與搜尋條件中name含有alice匹配

造成這個的原因是在索引中結構化的json文件被扁平化成乙個如下的鍵值對形式:

alice和31、john和2014-09-01之間的相關性被丟失了,物件型別的字段在儲存乙個單個的物件時是非常有用的,但是對儲存一系列物件陣列時就變得沒用了。

這個問題可以使用nested物件來解決。將comments對映為乙個nested物件型別而不是乙個普通的object型別,每個nested物件被索引為隱藏的單獨文件,如下所示:

1是第乙個nested物件

2是第二個nested物件

3是根(父)文件

總結:通過分別對每個巢狀物件進行索引,物件中欄位之間的關係可以被維持。我們可以執行乙個查詢,只有match發生在同乙個nested物件時它才會匹配。

不僅如此,由於nested物件被索引的方式,在查詢的時候聯合nested文件到根文件的速度是非常快的,幾乎與查詢單個的的文件一樣快。

另外,nested文件是隱藏的,我們不能直接訪問它。當更新、新增或者刪除乙個nested物件,必須重新索引整個文件,需要注意的是,傳送乙個搜尋請求時返回的是整個文件而不是只返回nested物件。

翻譯自官方文件:

巢狀查詢,巢狀結果

select o.u.username,u.address from orders o,user u where o.user id u.id and o.id 多對多 select u.id,u.username,u.address,o.id order id,o.number,o.createt...

PHP 條件巢狀 迴圈巢狀 條件迴圈相巢狀

1.條件巢狀 demo 假設在發3月工資的時候,不僅判定性別,還要判定男性是否有房,沒有房,可以發放住房補貼,對於女性,判定是否懷孕,懷孕還有懷孕補貼 totalmoney 0 總工資 basicmoney 8000 基本工資 男 nohouse true 沒有房?housemoney 150 住房...

C 迴圈巢狀 常見的巢狀

迴圈的巢狀就是,乙個迴圈體內又包含了另乙個完整的迴圈結構 內嵌的迴圈中還可以巢狀迴圈,這就是多層迴圈。在c 中,while迴圈 do while迴圈 for迴圈都可以互相巢狀,例如以下幾種 while語句巢狀while語句 while do while語句巢狀do while語句 do while ...