<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 嵌套-對象 ### 嵌套對象 事實上在Elasticsearch中,創建丶刪除丶修改一個文檔是是原子性的,因此我們可以在一個文檔中儲存密切關聯的實體。舉例來說,我們可以在一個文檔中儲存一筆訂單及其所有內容,或是儲存一個Blog文章及其所有回應,藉由傳遞一個`comments`陣列: ```json PUT /my_index/blogpost/1 { "title": "Nest eggs", "body": "Making your money work...", "tags": [ "cash", "shares" ], "comments": [ <1> { "name": "John Smith", "comment": "Great article", "age": 28, "stars": 4, "date": "2014-09-01" }, { "name": "Alice White", "comment": "More like this please", "age": 31, "stars": 5, "date": "2014-10-22" } ] } ``` <1> 如果我們依靠動態映射,`comments`欄位會被自動建立為一個`object`欄位。 因為所有內容都在同一個文檔中,使搜尋時并不需要連接(join)blog文章與回應,因此搜尋表現更加優異。 問題在於以上的文檔可能會如下所示的匹配一個搜尋: ```json GET /_search { "query": { "bool": { "must": [ { "match": { "name": "Alice" }}, { "match": { "age": 28 }} <1> ] } } } ``` <1> Alice是31歲,而不是28歲! 造成跨對象配對的原因如同我們在對象陣列中所討論到,在于我們優美結構的JSON文檔在索引中被扁平化為下方的 鍵-值 形式: ```json { "title": [ eggs, nest ], "body": [ making, money, work, your ], "tags": [ cash, shares ], "comments.name": [ alice, john, smith, white ], "comments.comment": [ article, great, like, more, please, this ], "comments.age": [ 28, 31 ], "comments.stars": [ 4, 5 ], "comments.date": [ 2014-09-01, 2014-10-22 ] } ``` `Alice`與`31` 以及 `John`與`2014-09-01` 之間的關聯已經無法挽回的消失了。 當`object`類型的欄位用于儲存_單一_對象是非常有用的。 從搜尋的角度來看,對於排序一個對象陣列來說關聯是不需要的東西。 這是_嵌套對象_被設計來解決的問題。 藉由映射`commments`欄位為`nested`類型而不是`object`類型, 每個嵌套對象會被索引為一個_隱藏分割文檔_,例如: ```json { <1> "comments.name": [ john, smith ], "comments.comment": [ article, great ], "comments.age": [ 28 ], "comments.stars": [ 4 ], "comments.date": [ 2014-09-01 ] } { <2> "comments.name": [ alice, white ], "comments.comment": [ like, more, please, this ], "comments.age": [ 31 ], "comments.stars": [ 5 ], "comments.date": [ 2014-10-22 ] } { <3> "title": [ eggs, nest ], "body": [ making, money, work, your ], "tags": [ cash, shares ] } ``` <1> 第一個`嵌套`對象 <2> 第二個`嵌套`對象 <3> 根或是父文檔 藉由分別索引每個嵌套對象,對象的欄位中保持了其關聯。 我們的查詢可以只在同一個嵌套對象都匹配時才回應。 不僅如此,因嵌套對象都被索引了,連接嵌套對象至根文檔的查詢速度非常快--幾乎與查詢單一文檔一樣快。 這些額外的嵌套對象被隱藏起來,我們無法直接訪問他們。 為了要新增丶修改或移除一個嵌套對象,我們必須重新索引整個文檔。 要牢記搜尋要求的結果并不是只有嵌套對象,而是整個文檔。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看