ES中的document是不可变的。如果想要修改一个已经存在的document只有替换他,如下:
PUT /website/blog/123
{
"title":"My first blog entry",
"text": "I am starting to get the hang of this...",
"date": "2014/01/02"
}
在响应里,可以看到,_version已经增加了,返回数据如下:
{
"_index": "website",
"_type": "blog",
"_id": "123",
"_version":2,
"created": false
}
标记1处表示ES中有一个document可请求添加的document拥有相同的index,type,id。也就是说这个document已经存在了。
在ES内部已经把旧的document标记为了deleted,并且添加了新的document。虽然你已经不能访问这个旧的document,但是他并没有立即被删除。ES将会在你添加更多的数据的时候在后台删除已经被标记为deleted的数据。
在稍后的章节中,我们将会讨论update
api,这个api能对document的部分数据进行更新。这个api对改变document显得更为到位,然而事实上,正如以上所描述的一样ES修改一个document要执行一下过程:
1:N从旧的document中检索JSON
2:修改
3:删除旧的document
4:插入新的
唯一的不同就是update的实现方式要通过client请求,而不是get或者index请求。
原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/update-doc.html
更新整个document(updating a whole document),布布扣,bubuko.com
时间: 2024-10-11 18:43:00