码迷,mamicode.com
首页 > 其他好文 > 详细

创建,插入,删除一个document(createing,indexing and deleteing a document)

时间:2014-05-19 15:26:34      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:style   class   c   http   int   a   

创建,插入,删除的请求都是写操作,在把primary shard复制到相对应的replica shard之前,这些操作必须是成功的。如图:

bubuko.com,布布扣

下面将会有序列出使用crate,index,delete在primary shard和replica shard上成功操作document的必要步骤,正如上图所示一样。

1:客户端发送create,index,delete请求到node1,于是把请求转发到node3

2:node1使用document的_id判断得知这个document是在shar0上,这里primary shard0的备份也已经被分配了。

3:node3在primary shard上执行请求。如果执行成功,同时转发请求到node1和node2中的他的replica shard。一旦所有的replica shard执行成功,node3会把执行成功的消息报告给请求node(即node1),然后node1把成功的消息返回给客户端。

当客户端收到成功的响应时候,primary shard和所有的对应的replica shard的document都已经被修改了,说明了你的修改是安全的。

 

还有很多的可选的请求参数影响着这个流程,这些参数能牺牲数据的安全性而提高性能,这些可选项可少被使用,因为ES已经够快了,但是为了完整性,这里还是说一下的。

replication:这个参数的默认值是sync,这个能让primary shard在返回消息到客户端之前等着replica shard的成功响应。如果你设置了这个参数的值是async,那么primary shard将会在自己执行成功后就返回,但是请求转发到replica shard依然在进行,这样你就不知到replica shard时候是执行成功的。建议使用sync,因为在太多的请求的时候可以造成ES过载,那么客户端就不用等待请求执行完成了。

 

consistency:默认情况下,在写操作进行之前,primary shard需要一个quorum或者majority的shard备份(这个数据备份可以是primary也可以是replica的)是可用的。这个用来防止数据被写到网络工作部分的“错误的一面”。quorum是如下定义的:

int( (primary + number_of_replicas) / 2 ) + 1

这个consistency要么是one(就是primary shard),要么是all(primary shard和replica shard),要么是默认的shard备份的quorum或者majority。要注意的是number_of_replicas的数量就是index settings中指定的replica的数量,并不是当前激活的replica的数量。如果你指定的index有三个replica,那么quorum的计算方式如下:

int( (primary + 3 replicas) / 2 ) + 1 = 3

但是如果你仅仅启动了2个node,就会有没有激活的shard来满足quorum,这时你将不能index或者delete任何的document。

timeout:如果没有任何的shared副本能够利用将会发生什么呢。ES将会等待,等待shard的出现。默认情况下,这个等待将会持续一分钟,如果需要,你可以使用timeout参数指定等待的值:100就是100毫秒,30s就是30秒

 

一个新的index默认有1个replica,就是有两个激活的shard副本可以响应请求,以满足quorum的需要。然而,默认设置将会阻止我们在一个单node的cluster上做任何有用的事情。为了避免这个情况的发生,使用quorum的唯一的要求就是number_of_replicas要大于1。

 

原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/distrib-write.html

创建,插入,删除一个document(createing,indexing and deleteing a document),布布扣,bubuko.com

创建,插入,删除一个document(createing,indexing and deleteing a document)

标签:style   class   c   http   int   a   

原文地址:http://www.cnblogs.com/blog1350995917/p/3735147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!