分布式文档存储

ES 分布式文档存储

路由文档到分片

创建索引的时候通常我们确定了几个主分片,主分片的数量已经确定,但是输入是存在那个分片?是怎么确定的?是通过一个公司算出来的。

1
shard = hash(routing)%number_of_primary_shards

其中routing默认是文档的id,当然也可以自定义routing的值。

集群中操作

我们可以往任意节点发送请求,每个节点都有能力处理任意请求。每个节点知道任意文档的位置,并且可以直接将需求转发到响应的节点上。这种节点称为协调节点。比如向node1发送数据请求,node1找到了0分片,然后发现0分片在node1,node2,node3个节点上,然后node1,通过轮询所有分片的来发送请求到哪一个节点做到负载均衡。

在文档被检索时,已经被索引的文档可能已经存在于主分片上但是还没有复制到副本分片。 在这种情况下,副本分片可能会报告文档不存在,但是主分片可能成功返回文档。 一旦索引请求成功返回给用户,文档在主分片和副本分片都是可用的

任何文档的CRUD操作都必须现在主分片上进行,然后复制到相关的副本分片。这个操作过程ES允许进行配置。

在集群中更新一个文档的步骤:
2017-12-21-11-34-49

坚持原创技术分享,您的支持将鼓励我继续创作!