Elasticsearch 零基础到入门新手教程(5)

green: 
所有的主分片和副本分片都正常运行 
yellow: 
所有的主分片都正常运行,但不是所有的副本分片都正常运行。 
red: 
有主分片没能正常运行。

往 Elasticsearch 添加数据时需要用到 索引 —— 保存相关数据的地方。 索引实际上是指向一个或者多个物理 分片 的 逻辑命名空间 
一个 分片 是一个底层的 工作单元 ,它仅保存了 全部数据中的一部分

文档被存储和索引到分片内,但是应用程序是直接与索引而不是与分片进行交互。 
Elasticsearch 是利用分片将数据分发到集群内各处的。分片是数据的容器,文档保存在分片内,分片又被分配到集群内的各个节点里。 当你的集群规模扩大或者缩小时, Elasticsearch 会自动的在各节点中迁移分片,使得数据仍然均匀分布在集群里。 
一个分片可以是 主 分片或者 副本 分片。 索引内任意一个文档都归属于一个主分片,所以主分片的数目决定着索引能够保存的最大数据量

一个副本分片只是一个主分片的拷贝。 副本分片作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读操作提供服务。

在索引建立的时候就已经确定了主分片数,但是副本分片数可以随时修改。 
索引在默认情况下会被分配5个主分片, 但可以在创建索引时指定分配3个主分片和一份副本(每个主分片拥有一个副本分片) 

例如下面建立了一个索引名叫: blogs ,设置了3个主分片,1个副本分片

1

2

3

4

5

6

7

 

curl -XPUT 'localhost:9200/blogs?pretty' -H 'Content-Type: application/json' -d'

{

"settings" : {

"number_of_shards" : 3,

"number_of_replicas" : 1

}

} '

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

 

[root@ES-100 ~]# curl -XGET 'localhost:9200/_cluster/health?pretty'

{

  "cluster_name" : "elasticsearch",

  "status" : "yellow",

  "timed_out" : false,

  "number_of_nodes" : 1,

  "number_of_data_nodes" : 1,

  "active_primary_shards" : 8,

  "active_shards" : 8,

  "relocating_shards" : 0,

  "initializing_shards" : 0,

  "unassigned_shards" : 8,

  "delayed_unassigned_shards" : 0,

  "number_of_pending_tasks" : 0,

  "number_of_in_flight_fetch" : 0,

  "task_max_waiting_in_queue_millis" : 0,

  "active_shards_percent_as_number" : 50.0

}

 

megacorp 有 5个 主分片, blogs 有3个主分片 , 
现在集群有8个主分片 , 8个副本分片,现在集群只有一个节点。

所有集群中8个副本分片都是 unassigned —— 它们都没有被分配到任何节点。 在同一个节点上既保存原始数据又保存副本是没有意义的,因为一旦失去了那个节点,我们也将丢失该节点上的所有副本数据。 
当前我们的集群是正常运行的,但是在硬件故障时有丢失数据的风险

当第二个节点加入到集群后,3个 副本分片 将会分配到这个节点上——每个主分片对应一个副本分片。 这意味着当集群内任何一个节点出现问题时,我们的数据都完好无损。

所有新近被索引的文档都将会保存在主分片上,然后被并行的复制到对应的副本分片上。这就保证了我们既可以从主分片又可以从副本分片上获得文档。

5.1 搭建ES集群 host   IP   linux version   es version  
ES-100   10.0.0.100   CentOS-7.2   es-6.5.1  
ES-101   10.0.0.101   centos-7.2   es-6.5.1

 

在两台机器分别安装好elasticsearch

在两个节点的elasticsearch.yml上设置相同的cluster_name,但不同的node_name 
在两个节点上设置相互发现的配置:discovery.zen.ping.unicast.hosts

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

 

ES-100的机器配置:

[root@ES-100 ~]# egrep -v '^#|^$' /etc/elasticsearch/elasticsearch.yml

cluster.name: es-test

node.name: es-test01

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

network.host: 127.0.0.1,10.0.0.100

discovery.zen.ping.unicast.hosts: ["10.0.0.100", "10.0.0.101"]

discovery.zen.minimum_master_nodes: 2

 

ES-101的机器配置:

[root@ES-101 ~]# egrep -v '^#|^$' /etc/elasticsearch/elasticsearch.yml

cluster.name: es-test

node.name: es-test02

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

network.host: 127.0.0.1,10.0.0.101

discovery.zen.ping.unicast.hosts: ["10.0.0.100", "10.0.0.101"]

discovery.zen.minimum_master_nodes: 2

两台机器重启ES:

service elasticsearch restart

 

重启之后查看集群整体节点数量:

5.2 查看集群的状态信息

1. 查看集群状态

1

2

3

 

[root@ES-100 ~]# curl 'localhost:9200/_cat/health?v'

或者

[root@ES-101 ~]# curl 'localhost:9200/_cluster/health?pretty'

 

Elasticsearch 零基础到入门新手教程

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0b85b6141a93dda06aa22fb80439f5cc.html