面试题答案
一键面试查看集群健康状态
- 命令:
- 在 Elasticsearch 中,可以使用
GET _cluster/health
API 来查看集群的健康状态。例如,通过 curl 命令调用:
curl -X GET "localhost:9200/_cluster/health?pretty"
pretty
参数用于将返回结果格式化,使其更易读。
- 在 Elasticsearch 中,可以使用
- 返回结果各项指标含义:
- cluster_name:集群的名称,标识当前 Elasticsearch 集群。
- status:集群的健康状态,有三种取值:
- green:所有主分片和副本分片都已分配,集群处于最佳状态。
- yellow:所有主分片都已分配,但部分副本分片未分配。集群仍可正常工作,但存在一定的风险,例如某个节点故障时可能会丢失数据。
- red:部分主分片未分配,此时集群部分数据不可用,搜索可能只能返回部分结果。
- timed_out:布尔值,指示获取集群健康状态是否超时。
- number_of_nodes:集群中的节点总数。
- number_of_data_nodes:集群中数据节点的数量。数据节点负责存储和处理数据。
- active_primary_shards:活动的主分片数量。主分片是数据的基本存储单元,每个索引至少有一个主分片。
- active_shards:活动的分片总数,包括主分片和副本分片。
- relocating_shards:正在迁移的分片数量。迁移可能由于节点故障、负载均衡等原因发生。
- initializing_shards:正在初始化的分片数量。新创建的索引或从其他节点恢复数据时,分片会处于初始化状态。
- unassigned_shards:未分配的分片数量。这可能是由于节点故障、资源不足等原因导致的。
- delayed_unassigned_shards:延迟分配的分片数量。Elasticsearch 可能会延迟分配某些分片,以等待集群状态稳定等情况。
- number_of_pending_tasks:等待执行的任务数量。例如创建索引、分配分片等任务。
- number_of_in_flight_fetch:正在进行的获取操作数量。
获取每个节点的基本信息
- 命令:
- 使用
GET _nodes
API 可以获取每个节点的基本信息。例如:
curl -X GET "localhost:9200/_nodes?pretty"
- 如果只想获取特定的信息,如节点名称和 IP,可以使用
GET _nodes/http
,它会返回与 HTTP 相关的节点信息,其中包含节点名称和 IP 等。
- 使用
- 返回结果各项指标含义:
- nodes:这是一个对象,包含集群中每个节点的详细信息。每个节点通过唯一的节点 ID 作为键。
- name:节点的名称,在 Elasticsearch 配置文件(
elasticsearch.yml
)中配置,用于标识集群中的节点。 - transport_address:节点的传输地址,格式为
<ip>:<port>
,用于节点之间的内部通信。 - host:节点的主机名或 IP 地址。
- ip:节点绑定的 IP 地址。
- version:节点运行的 Elasticsearch 版本。
- build_flavor:构建版本的类型,如
default
等。 - build_type:构建类型,例如
tar
或zip
等。 - build_hash:构建的哈希值,用于唯一标识特定的构建版本。
- roles:节点的角色,如
master
、data
、ingest
等,定义了节点在集群中的功能。 - http:如果节点启用了 HTTP 协议,此部分包含 HTTP 相关的信息,如
bound_address
(HTTP 绑定的地址)等。