多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 更新整个文档 文档在Elasticsearch中是不可变的——我们不能修改他们。如果需要更新已存在的文档,我们可以使用《索引文档》章节提到的`index` API _重建索引(reindex)_ 或者替换掉它。 ```Javascript PUT /website/blog/123 { "title": "My first blog entry", "text": "I am starting to get the hang of this...", "date": "2014/01/02" } ``` 在响应中,我们可以看到Elasticsearch把`_version`增加了。 ```Javascript { "_index" : "website", "_type" : "blog", "_id" : "123", "_version" : 2, "created": false <1> } ``` - <1> `created`标识为`false`因为同索引、同类型下已经存在同ID的文档。 在内部,Elasticsearch已经标记旧文档为删除并添加了一个完整的新文档。旧版本文档不会立即消失,但你也不能去访问它。Elasticsearch会在你继续索引更多数据时清理被删除的文档。 在本章的后面,我们将会在《局部更新》中探讨`update` API。这个API *似乎* 允许你修改文档的局部,但事实上Elasticsearch遵循与之前所说完全相同的过程,这个过程如下: 1. 从旧文档中检索JSON 2. 修改它 3. 删除旧文档 4. 索引新文档 唯一的不同是`update` API完成这一过程只需要一个客户端请求既可,不再需要`get`和`index`请求了。