es:
下一篇:
内容:
要想增加数据到es,需要一个索引,索引用来存储数据,索引是一个逻辑空间指向一个/多个物理分片。一个分片是一个底层的工作单元,每一个分片是一个lucene单例,是一个完整的搜索引擎,我们的文档被存储存储并且被索引在分片里,客户端不是与分片直接交互而是与索引直接交互。分片就是es在集群里分发数据的意思,分片包含了数据,文档存储在分片里,分片在各个节点,一旦集群扩容/减容,es自动在节点间迁移分片,这样集群仍然保持平衡。一个分片是主分片/从分片。你的任何一个文档都属于一个主分片。所以主分片的数量决定了你索引可以容纳的最大的数据量。PS:我自己加的:主分片就是平时所说的分片,从分片是对某个主分片的冗余复制备份。这里是分片+主从的机制。分片在前,主从在后。主分片的容量没有限制,但是有一个限制:硬件,文档,如何索引和查询,希望的响应时间。一个从分片仅仅是主分片的复制,主从机制用来提供冗余备份来抵御灾难。并且服务于都请求比如查询和检索文档。主分片在索引创建时就已经固定了,以后不可以更改了,但是从分片的数量可以修改。创建一个叫blogs的索引,默认情况下,索引分配了5个主分片,但是为了演示,我们分配3个主分片和1个从分片。PUT /blogs{ "settings" : { "number_of_shards" : 3, "number_of_replicas" : 1 }}如上所示,3个主分片都分配给了唯一的一个节点,这个时候查询集群的健康,我们看到:{ "cluster_name": "elasticsearch", "status": "yellow", "timed_out": false, "number_of_nodes": 1, "number_of_data_nodes": 1, "active_primary_shards": 3, "active_shards": 3, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 3 }集群的健康是黄色。 "unassigned_shards": 3表示3个从分片还没有分配给节点。 集群健康状况为黄色表明:所有的主分片正常运行,集群可以正常服务,但是不是所有的从分片正常,事实上,3个从分片都没有分配,因为没有多余的节点,你分配在本机上也失去了主从的用意啊,原文说了:在同一个节点上存储同样的数据备份无任何意义。如果这个节点挂了,我们就失去了所有的备份。目前我们的集群可以正常运行,但是存在硬件挂掉而数据失去的风险(因为只有一个节点)