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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Update API ## 更新 API ?? ? ? ? ?更新 API 允許基于腳本文件來更新文件。操作允許從索引中獲取文件(并行的分片)來運行腳本文件(帶有可選擇的腳本語言和參數),最終索引獲得結果(允許刪除和忽略該操作)。它使用版本控制,以便于確保在獲取和重索引時候沒有更新發生。 ? ? ? ?注意,此操作仍然意味著對文件做重新的全索引。它只是刪除了一些網絡往返,減少了在索引和獲取時候版本沖突的幾率。?`_source?`需要啟用此功能工作。 ? ? ? ?例如:一個簡單的索引文件: ``` PUT test/type1/1 { "counter" : 1, "tags" : ["red"] } ``` ## 腳本更新 現在,我們可以執行一個腳本,用做計數器: ``` POST test/type1/1/_update { "script" : { "inline": "ctx._source.counter += params.count", "lang": "painless", "params" : { "count" : 4 } } } ``` 我們可以添加標簽來進行標記(注意,如果標簽存在,仍然會添加,因為是一個列表) ``` POST test/type1/1/_update { "script" : { "inline": "ctx._source.tags.add(params.tag)", "lang": "painless", "params" : { "tag" : "blue" } } } ``` 除了`_source`,下列變量通過?`ctx map 都是可用的`:`_index`,`_type`,`_id`,`_version`,`_routing`,`_parent`,和`_now`(當前的時間戳)。 我們也可以將新字段添加到文檔: ``` POST test/type1/1/_update { "script" : "ctx._source.new_field = \"value_of_new_field\"" } ``` 或者從文件中刪除字段: ``` POST test/type1/1/_update { "script" : "ctx._source.remove(\"new_field\")" } ``` 而且,我們甚至可以改變已執行的操作。這個例子就是刪除文檔,如果?`tags?`包含?`green?`,否則就什么也不做(`noop`): ``` POST test/type1/1/_update { "script" : { "inline": "if (ctx._source.tags.contains(params.tag)) { ctx.op = \"delete\" } else { ctx.op = \"none\" }", "lang": "painless", "params" : { "tag" : "green" } } } ``` ## 部分文檔更新 更新 API 還支持部分文檔的更新,將合并到現有的文件(簡單的遞歸合并,內合并,更換核心“鍵/值”對和數組)。例如: ``` POST test/type1/1/_update { "doc" : { "name" : "new_name" } } ``` 如果同時?`doc 和`?`script 被`指定,那么?`doc?`將被忽略。最好是把部分文件對應腳本本身。 檢測空操作更新 如果?`doc?`指定,它的值合并到現有的?`_source`。默認情況下不改變任何檢測,他們不會改變任何并返回“結果”:“NOOP” 像這樣的: ``` POST test/type1/1/_update { "doc" : { "name" : "new_name" } } ``` 如果?`name?`是?`new_name?`請求,被發送之前那么整個更新請求被忽略。如果請求被忽略了在?`result?`響應中的返回?`noop。` ``` { "_shards": { "total": 0, "successful": 0, "failed": 0 }, "_index": "test", "_type": "type1", "_id": "1", "_version": 6, "result": noop } ``` 你可以通過設置 “detect_noop” 禁用此行為: ``` POST test/type1/1/_update { "doc" : { "name" : "new_name" }, "detect_noop": true } ``` ## Upserts 如果該文件不存在,則內容`upsert`元素將被插入作為一個新的文檔。如果該文件確實存在,那么?`script`將轉而執行: ``` POST test/type1/1/_update { "script" : { "inline": "ctx._source.counter += params.count", "lang": "painless", "params" : { "count" : 4 } }, "upsert" : { "counter" : 1 } } ``` scripted_upsert 如果你想你的腳本無論該文件存在與否都要運行-即腳本處理初始化文件而不是 ?`upsert -`然后設置?`scripted_upsert?`為?`true:` ``` POST sessions/session/dh3sgudg8gsrgl/_update { "scripted_upsert":true, "script" : { "id": "my_web_session_summariser", "params" : { "pageViewEvent" : { "url":"foo.com/bar", "response":404, "time":"2014-01-01 12:32" } } }, "upsert" : {} } ``` doc_as_upsert 取代發送部分?`doc 添加一個?``upsert?`文檔,設置?`doc_as_upsert?`為?`true ,`將使用?`doc 內容`作為?`upsert`?值: ``` POST test/type1/1/_update { "doc" : { "name" : "new_name" }, "doc_as_upsert" : true } ``` ## 參數 更新操作支持以下查詢字符串參數:? | ? | ? | | --- | --- | | retry_on_conflict | 在更新的 get 和 index 時,它可能是另一種方法可能已經更新了相同的文件。默認情況下,更新將失敗,版本沖突異常。該 `retry_on_conflict`?參數控制拋出異常之前重試更新的次數。 | | routing | 用于追蹤更新請求正確的分片,如果文檔更新不存在把其設置為更新插入請求。不能用于更新現有文檔的路徑。 | | parent | 用于追蹤更新請求正確的分片,如果文檔更新不存在把 parent 設置為更新插入請求。不能用于更新 `parent` 現有文檔的。如果被指定別名索引,那么它將覆蓋父 route,它將用來 route 請求。 | | timeout | 超時等待一個分片變得可用。 | | wait_for_active_shards | 在更新操作時,復制分片需要處在活躍狀態的數目。 | | refresh | 控制被該請求所做更改時進行的搜索。 | | _source | 允許控制是否以及更新源如何在響應中返回。默認情況下不返回更新的源。見 source_filtering 詳情。 | | `version`?&`version_type` | 更新 API 使用 Elasticsearch 的版本控制以確保文件在更新過程中不會改變。您可以使用 `version`?參數指定版本,如果文件匹配那么指定的文件需要更新。通過設置版本類型 `force` ,你可以更新后迫使文件使用新版本(小心使用!`force`?不會保證該文件沒有變化)。 |
                  <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>

                              哎呀哎呀视频在线观看