27 lines
998 B
Markdown
27 lines
998 B
Markdown
|
|
## 前言
|
|||
|
|
|
|||
|
|
在 Elasticsearch 中文档是**不可改变**的,不能修改它们。如果想要更新现有的文档,需要重建索引或者进行替换,我们可以使用相同的 index API 进行实现。
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
PUT /website/blog/123
|
|||
|
|
{
|
|||
|
|
"title": "My first blog entry",
|
|||
|
|
"text": "I am starting to get the hang of this...",
|
|||
|
|
"date": "2014/01/02"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
在内部,Elasticsearch已将旧文档标记为已删除,并增加一个全新的文档。 尽管你不能再对旧版本的文档进行访问,但它并不会立即消失。
|
|||
|
|
|
|||
|
|
当继续索引更多的数据,Elasticsearch会在后台清理这些已删除文档。
|
|||
|
|
|
|||
|
|
|
|||
|
|
它似乎对文档直接进行了修改,但实际上Elasticsearch按前述完全相同方式执行以下过程:
|
|||
|
|
|
|||
|
|
- 从旧文档构建JSON
|
|||
|
|
- 更改该JSON
|
|||
|
|
- 删除旧文档
|
|||
|
|
- 索引一个新文档
|
|||
|
|
|
|||
|
|
唯一的区别在于, update API 仅仅通过一个客户端请求来实现这些步骤,而不需要单独的 get 和 index 请求。
|