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

把document路由到shard(routing a document to a shard)

时间:2014-05-19 16:40:38      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:des   class   c   http   a   get   

当你index一个document的时候,这个document被存储在一个单独的primary shard上。ES是怎么知道一个document所属的shard的呢?当我们创建了一个新的document,ES是怎么知道这个document是应该存储在shard1上还是shard2上的呢?

这个进程不能是随机的,因为在将来的某个时候我们要检索这个document,事实上,这个存储是有一个简单的公式决定的:

shard = hash(routing) % number_of_primary_shards

这个routing的值任意的字符串,默认是document的_id,也能是一个用户设置的值,这个routing字符串通过一个hash函数生成一个数字,这个数字除以index中的primary shard的数量,然后返回余数。这个余数是在0到number_of_primary_shards - 1这个范围之间的。告诉我们存储指定的document的shard的号码。

这个也解释了为什么primary shard只能在index创建的时候指定,而不能随意改变:如果primary shard的数量有变化,以前所有的routing值都会失效,document将会再也找不到。

所有操作document的APIS(get,index,delete,bulk,update和mget)都有一个routing参数,这个参数可以定制document到shard的映射。一个定制的routing可以保证所有的document都被引用,例如,可以定制所有的document属于同一个user,并且存储在同一个shard。我们将会在Big data - Designing for scale (TODO)讨论你为什么会这么做。

 

原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/routing-value.html

把document路由到shard(routing a document to a shard),布布扣,bubuko.com

把document路由到shard(routing a document to a shard)

标签:des   class   c   http   a   get   

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

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