Elasticsearch 的节点、集群、分片和副本 全面解析
在Elasticsearch中,我们可以将节点视为单个服务器实例,它可以是独立的,也可以是集群的一部分。集群是由多个节点组成的,这些节点共同持有你的全部数据,并提供重新建立索引和查询所需的所有功能。
分片是索引的子集,它们被存储在不同的节点上。通过将一个索引分成多个分片,你可以处理不可能一次性加载进内存的大量数据。
副本是分片的副本,用于提供高可用性。副本是分片的精确副本,每个分片可以有一个主分片或多个副本分片。
以下是一个简单的例子,展示了如何在Elasticsearch中定义一个具有三个节点的集群,该集群有一个名为“my\_index”的索引,该索引被分为两个分片,每个分片有一个副本。
{
"cluster_name": "my_cluster",
"nodes": {
"N1": {
"name": "Node 1",
"host": "192.168.1.1",
"attributes": {
"box_type": "hot"
}
},
"N2": {
"name": "Node 2",
"host": "192.168.1.2",
"attributes": {
"box_type": "warm"
}
},
"N3": {
"name": "Node 3",
"host": "192.168.1.3",
"attributes": {
"box_type": "cold"
}
}
},
"indices": {
"my_index": {
"shards": 2,
"replicas": 1,
"index_routing": {
"allocation": {
"require": {
"box_type": "hot"
}
}
}
}
}
}
在这个配置中,我们定义了一个名为“my\_cluster”的集群,它有三个节点:Node 1、Node 2 和 Node 3。我们还定义了一个名为“my\_index”的索引,它有两个主分片和一个副本分片。索引路由规则要求将“my\_index”的分片放置在具有“hot”box\_type属性的节点上。
评论已关闭