更新整个document(updating a whole document)

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

更新整个document(updating a whole document)的相关文章

部分更新document(pritial update document)

updateAPI是以前说过的read和write操作的联合: 操作步骤: 1:客户端向node1发起请求. 2:node1想node3转发请求,node3是要查找的document的primary shard被分配的地方 3:node3从primary shard检索要查找的document,把_source中的对应的field的作出修改,然后重新插入到priymary shard,如果document被其他线程进行了修改,那么根据retry_on_conflict指定的次数,重复步骤3直到失

jquery插件开发;(function ( $, window, document, undefined ){}(jQuery, window,document)分析

经常看到许多jquery插件是这种形式: ;(function( $, window, document, undefined ){}){ //...code }(jquery,window,document) 一开始自己也是不太清楚,后台查了许多资料博客,基本了解大意,所以总结出来,以供之后查阅更正. 1.自调函数(function(){})() 这是一个自调函数,函数定义后自行调用.将匿名函数放在括号之内,并紧跟一个括号.第二个括号的意思是"立即调用".同时第二个括号也是向匿名函数

document.body.scrollTop与document.documentElement.scrollTop兼容

项目中遇到这个小问题,看到有前辈总结,借来用一下 document.body.scrollTop与document.documentElement.scrollTop兼容 这两天在写一个JS的网页右键菜单,在实现菜单定位的时候发现了这个问题:chrome居然不认识document.documentElement.scrollTop! 看前辈们的文章,纷纷表示如果有文档声明(即网页第一句的docType)的情况下,标准浏览器是只认识documentElement.scrollTop的,但chrom

[No000068]document.body.clientHeight 和 document.documentElement.clientHeight 的区别

document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.documentElement.clientWidth ==> 可见区域宽度 document.documentElement.clientHeight ==> 可见区域高度 注意开头<!DOCTYPE ..>的声明,没有该声明时,document.documentElement.clientHe

检索一个document(retrieving a document)

一个文档可以从primary shard和任意一个相对应的replica shard中检索: 就像上面图形中表示的,下面列出从primary shard或这replica shard检索document的步骤: 1:客户端发送请求到node1 2:这个node使用document的_id判定document在shard0.shard0的备份存在于所有的三个node,在这个情景下,node1把请求转发到node2. 3:node2返回document到node1,node1将会返回响应到客户端.

使用$(window).width(),window.outerWidth,window.innerWidth,document.documentElement.clientWidth,document.body.clientWidth的区别与兼容分析

下面先以谷歌为例做数据分析,兼容性问题后面再说. 先上一张图(图最好理解): firebug打印结果: 使用$(window).width()与$(window).height():1349 392 使用window.outerWidth与window.outerHeight:1366 728 使用window.innerWidth与window.innerHeight:1366 392 使用document.documentElement.clientWidth与document.docume

document.documentElement.clientHeight 与 document.body.clientHeight(杜绝千篇一律的抄袭!!)

document.documentElement.clientHeight 与 document.body.clientHeight用来获取页面可视高度我觉得有点问题.这两个应该不是一个东西. 页面中加了:<!DOCTYPE html> 很明显在谷歌浏览器中两个值不是一个概念. 页面中不加:<!DOCTYPE html> 发现两个的值掉了个个! 所以这里有几个问题要搞明白: 1.<!DOCTYPE html>是什么 <!DOCTYPE> 声明不是 HTML

document.body.clientHeight和document.documentElement.clientHeight区别

document.body.clientHeight:body对象的高度 document.documentElement.clientHeight:指可见区域的高度 获取元素中滚动条的垂直偏移可以写成: var top = document.documentElement.scrollTop || document.body.scrollTop; document.body.clientHeight和document.documentElement.clientHeight区别

火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题

一.先遇到document.body.scrollTop值为0的问题 做页面的时候可能会用到位置固定的层,读取document.body.scrollTop来设置层的位置,像这样, window.onscroll=function () { var oId=document.getElementByIdx_x("id"); oId.style.top=document.body.scrollTop+"px"; } 可是怎么没有达到预期效果呢,输出document.b