# 局部更新

The `update` API combines the read and write patterns explained above.

\[\[img-distrib-update]] .Partial updates to a document image::images/04-04\_update.png\["Partial updates to a document"]

Below we list the sequence of steps used to perform a partial update on a document, as depicted in <>:

1. The client sends an update request to `Node_1`.
2. It forwards the request to `Node 3`, where the primary shard is allocated.
3. `Node 3` retrieves the document from the primary shard, changes the JSON in the `_source` field, and tries to reindex the document on the primary shard. If the document has already been changed by another process, it retries step 3 up to `retry_on_conflict` times, before giving up.
4. If `Node 3` has managed to update the document successfully, it forwards the new version of the document in parallel to the replica shards on `Node 1` and `Node 2` to be reindexed. Once all replica shards report success, `Node 3` reports success to the requesting node, which reports success to the client.

The `update` API also accepts the `routing`, `replication`, `consistency` and `timeout` parameters that are explained in <>.

> ## 基于文档的复制

When a primary shard forwards changes to its replica shards, it doesn't forward the update request. Instead it forwards the new version of the full document. Remember that these changes are forwarded to the replica shards asynchronously and there is no guarantee that they will arrive in the same order that they were sent. If Elasticsearch forwarded just the change, it is possible that changes would be applied in the wrong order, resulting in a corrupt document.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hezhiqiang.gitbook.io/elasticsearch/distributed_crud/partial_updates.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
