<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                Elasticsearch 是分布式的。當文檔創建、更新或刪除時, 新版本的文檔必須復制到集群中的其他節點。 Elasticsearch 也是異步和并發的,這意味著這些復制請求被并行發送,并且到達目的地時也許順序是亂的 。 Elasticsearch 需要一種方法確保文檔的舊版本不會覆蓋新的版本。 <br/> 當我們之前討論 index的GET 和 delete 請求時,我們指出每個文檔都有一個 `_version `(版本)號,當文檔被修改時版本號遞增。 Elasticsearch 使用這個 version 號來確保變更以正確順序得到執行。如果舊版本的文檔在新版本之后到達,它可以被簡單的忽略。 <br/> 我們可以利用 version 號來確保應用中相互沖突的變更不會導致數據丟失。我們通過指定想要修改文檔的 version 號來達到這個目的。 如果該版本不是當前版本號,我們的修改請求將會失敗。 <br/> 老版本 es 使用 version,但是新版本不支持了,會報下面的錯誤,提示我們用 `if_seq_no`和 `if_primary_term`來代替。演示如下: **1. 新增一個文檔** ```json PUT /shopping/_create/1001 { "title": "華為手機" } 得到的響應如下: { "_index" : "shopping", "_type" : "_doc", "_id" : "1001", "_version" : 1, # 版本號為1 "result" : "created", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 0, # _seq_no、_primary_term與樂觀并發控制相關 "_primary_term" : 1 } ``` **2. 使用version更改文檔會失敗** 提示我們用 `if_seq_no`和 `if_primary_term`來代替。 ```json POST /shopping/_update/1001?version=1 { "doc": { "title": "華為手機123" } } 得到的響應如下: { "error" : { "root_cause" : [ { "type" : "action_request_validation_exception", "reason" : "Validation Failed: 1: internal versioning can not be used for optimistic concurrency control. Please use `if_seq_no` and `if_primary_term` instead;" } ], "type" : "action_request_validation_exception", "reason" : "Validation Failed: 1: internal versioning can not be used for optimistic concurrency control. Please use `if_seq_no` and `if_primary_term` instead;" }, "status" : 400 } ``` **3. 用 `if_seq_no`和 `if_primary_term`更改文檔** ```json #if_seq_no=0和if_primary_term=1需要已經存在 #如為"_seq_no" : 0、"_primary_term" : 1 #每更新一次文檔_seq_no就會增1 POST /shopping/_update/1001?if_seq_no=0&if_primary_term=1 { "doc": { "title": "華為手機123" } } 響應內容如下: { "_index" : "shopping", "_type" : "_doc", "_id" : "1001", "_version" : 2, # 版本號由1變更為2 "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, # 由0變更為1 "_primary_term" : 1 } ```
                  <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>

                              哎呀哎呀视频在线观看