MST

星途 面试题库

面试题:ElasticSearch 中查看集群健康状态及节点信息的常用命令有哪些

请详细说明在 ElasticSearch 中,通过哪些命令或 API 可以查看集群的健康状态,以及获取每个节点的基本信息(如节点名称、IP 等),并解释这些命令返回结果中各项指标的含义。
40.8万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

查看集群健康状态

  1. 命令
    • 在 Elasticsearch 中,可以使用 GET _cluster/health API 来查看集群的健康状态。例如,通过 curl 命令调用:
    curl -X GET "localhost:9200/_cluster/health?pretty"
    
    • pretty 参数用于将返回结果格式化,使其更易读。
  2. 返回结果各项指标含义
    • 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:正在进行的获取操作数量。

获取每个节点的基本信息

  1. 命令
    • 使用 GET _nodes API 可以获取每个节点的基本信息。例如:
    curl -X GET "localhost:9200/_nodes?pretty"
    
    • 如果只想获取特定的信息,如节点名称和 IP,可以使用 GET _nodes/http,它会返回与 HTTP 相关的节点信息,其中包含节点名称和 IP 等。
  2. 返回结果各项指标含义
    • nodes:这是一个对象,包含集群中每个节点的详细信息。每个节点通过唯一的节点 ID 作为键。
    • name:节点的名称,在 Elasticsearch 配置文件(elasticsearch.yml)中配置,用于标识集群中的节点。
    • transport_address:节点的传输地址,格式为 <ip>:<port>,用于节点之间的内部通信。
    • host:节点的主机名或 IP 地址。
    • ip:节点绑定的 IP 地址。
    • version:节点运行的 Elasticsearch 版本。
    • build_flavor:构建版本的类型,如 default 等。
    • build_type:构建类型,例如 tarzip 等。
    • build_hash:构建的哈希值,用于唯一标识特定的构建版本。
    • roles:节点的角色,如 masterdataingest 等,定义了节点在集群中的功能。
    • http:如果节点启用了 HTTP 协议,此部分包含 HTTP 相关的信息,如 bound_address(HTTP 绑定的地址)等。