ElasticSearch High Level REST API(6)获取集群信息

ElasticSearch 集群原理

节点

一个运行中的EasticSearch 被称为一个节点,而集群是由多个用于拥有相同cluster.name配置的节点组成,它们共同承担数据和负载的压力,当有新的节点加入或移除,集群会重新平均分布所有的数据。

集群中的节点分为主节点和从节点。主节点负责管理集群范围内的所有变更,例如增加、删除索引或节点变更,我们可以将请求发送到任意节点,每个节点都知道任意文档所处的位置,并且能将我们的请求转发到我们操作要对应的节点上。

分片

分片是底层的一个工作单元,一个分片就是一个Lucene示例,一个分片就是一个完整的搜索引擎。我们的索引数据被存储到分片中,一个分片可以存储多条索引文档。

分片是数据的容器,文档存储在分片内,分片又被分配到集群的各个节点。当集群规模扩大或缩小时,ElasticSearch会自动在各节点中迁移分片,使得数据仍然均匀的分配到集群中。

分片分为主分片和副本分片。主分片数量是固定的,在索引建立时就已确定。副本分片只是作为主分片的一个拷贝,作为硬件故障时保护数据不丢失的一个备份,副本分片允许处理搜索查询请求,但不允许处理修改、删除的操作。

获取集群信息

Info API

ElasticSearch 可以通过info()方法检索群集信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@GetMapping("info")
public void info() {
MainResponse response = null;
try {
response = client.info(RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
return;
}
//返回集群的各种信息
ClusterName clusterName = response.getClusterName(); //集群名称
String clusterUuid = response.getClusterUuid(); //群集的唯一标识符
String nodeName = response.getNodeName(); //已执行请求的节点的名称
Version version = response.getVersion(); //已执行请求的节点的版本
Build build = response.getBuild(); //已执行请求的节点的构建信息
log.info("clusterName: {}", clusterName);
log.info("clusterUuid: {}", clusterUuid);
log.info("nodeName: {}", nodeName);
log.info("version: {}", version);
log.info("build: {}", JSON.toJSONString(build));
}
1
2
3
4
5
clusterName: Cluster [elasticsearch]
clusterUuid: Yw4Baaw9S72T8KqsuiOs9Q
nodeName: node-1
version: 7.1.0
build: {"productionRelease":true,"qualifiedVersion":"7.1.0","snapshot":false}

Ping API

通过使用ping()方法可以检查集群是否连接成功,并返回一个布尔值:

1
boolean response = client.ping(RequestOptions.DEFAULT);

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :