编程式交互:REST API

2023年 7月 14日 86.5k 0

Elasticsearch提供了REST API,这些API可供UI组件使用,并可以直接调用这些API来配置和访问Elasticsearch的功能。通过这些API,可以以编程方式与Elasticsearch进行交互,执行索引、搜索、聚合等操作。REST API提供了一种灵活和通用的方式来与Elasticsearch进行集成和交互。下面来看一下常用的_cat APIcluster/node API

1.cat API

CAT API主要用于人类使用,因为输出格式化为易于阅读和理解的方式。这些API对于管理员、开发人员以及任何需要以简洁易读的格式检索集群、索引或节点信息的人员非常有用。

通过使用CAT API,可以快速获取有关Elasticsearch集群的重要信息,无需复杂的查询或解析JSON响应。

CAT API提供了各种端点来从Elasticsearch中检索不同类型的数据,For Example:

  • cat indices:该API提供了Elasticsearch集群中所有索引的紧凑摘要,包括索引名称、文档计数、大小和其他元数据等信息。

  • cat shards:该API显示集群中分片的信息,包括它们的状态、分配情况和其他详细信息。

  • cat nodes:该API返回集群中节点的信息,包括它们的角色、IP地址和其他相关数据。

  • cat health:该API显示集群的整体健康状况,包括节点数量、活动分片数和其他健康相关信息。

  • cat aliases:该API列出集群中定义的所有别名及其关联的索引。

  • CAT API仅用于通过Kibana控制台或命令行进行人工查看。它们不适用于应用程序使用。对于应用程序使用,建议使用相应的JSON API

    verbose

    v参数可以打印详细信息。For Example:

    GET _cat/master?v=true
    
    ## response
    
    id                     host       ip         node
    YWfAPAonTteQ9GO__aOjQw 172.17.0.2 172.17.0.2 ece13c2201ae
    

    h参数

    h参数可以强制只展示某些列。

    更多参数->官方文档

    cat aliases

    该API用于获取集群的索引别名,包括过滤器和路由信息。

    查看所有的索引别名。

    # 查看所有的索引别名
    GET _cat/aliases?v=true
    
    # response
    alias                index                  filter routing.index routing.search is_write_index
    .kibana_task_manager .kibana_task_manager_1 -      -             -              -
    .kibana              .kibana_1              -      -             -              -
    

    查看某一个指定的索引别名。

    # 查看某一个索引别名
    GET _cat/aliases/.kibana_task_manager?v
    
    # response
    alias                index                  filter routing.index routing.search is_write_index
    .kibana_task_manager .kibana_task_manager_1 -      -             -              -
    

    cat health

    该API返回集群的健康状态,类似于集群健康API。

    GET /_cat/health?v
    
    # response
    epoch      timestamp cluster        status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
    1688996657 13:44:17  docker-cluster yellow          1         1      9   9    0    0        5             0                  -                 64.3%
    

    cat indices

    该API返回集群中索引的高级信息,包括数据流的后备索引。

    返回所有索引的信息。

    GET /_cat/indices?v
    
    # response
    health status index                    uuid                   pri rep docs.count docs.deleted store.size pri.store.size
    yellow open   test                     7gJSMomWTgmZTrCC-nj4Pg   1   1          2            0     11.3kb         11.3kb
    yellow open   sale_store_day           szfu4GDTR96EmTTSLmWVlg   1   1          2            0      7.1kb          7.1kb
    green  open   .apm-custom-link         pO5XDGzkTo27JY2j3qYykw   1   0          0            0       208b           208b
    green  open   .kibana_task_manager_1   h0ck6yAXTrCcuBImgrHpbg   1   0          5            2       24kb           24kb
    green  open   .apm-agent-configuration MNfKD_6RTd6Trtw96sWH3w   1   0          0            0       208b           208b
    yellow open   topic                    DjF8rPKPStK7w-2NaFSMiw   1   1          2            0      5.9kb          5.9kb
    green  open   .kibana_1                fLZb8cfXQjeQ48NwoG2r6w   1   0        251            5    142.3kb        142.3kb
    yellow open   logs                     pvSDlwZ8RRGHJfWPU448gg   1   1          3            0      3.9kb          3.9kb
    yellow open   order                    X2l5ZcXoSUuiYN6CbznduA   1   1       1000            0    114.2kb        114.2kb
    

    返回某个指定索引的信息。

    GET /_cat/indices/order?v
    
    #response
    health status index uuid                   pri rep docs.count docs.deleted store.size pri.store.size
    yellow open   order X2l5ZcXoSUuiYN6CbznduA   1   1       1000            0    114.2kb        114.2kb
    

    cat master

    该API返回有关主节点的信息,包括ID、绑定的IP地址和名称。

    GET /_cat/master?v
    
    # response
    id                     host       ip         node
    YWfAPAonTteQ9GO__aOjQw 172.17.0.2 172.17.0.2 ece13c2201ae
    

    cat nodes

    返回集群相关的信息。

    GET /_cat/nodes?v=true
    
    # response
    ip         heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
    172.17.0.2           52          97   1    0.00    0.01     0.05 dilmrt    *      ece13c2201ae
    

    这里返回的是默认的列,如果需要返回指定的列,可以参考官方文档。

    cat pending tasks

    该API返回尚未执行的集群级别的更改,类似于待处理的集群任务API。

    查看所有未执行的任务。

    GET /_cat/pending_tasks?v
    

    cat plugins

    该API返回集群中每个节点上正在运行的插件列表。

    GET /_cat/plugins?v=true&s=component&h=name,component,version,description
    
    # response
    name         component   version description
    ece13c2201ae analysis-ik 7.17.0   IK Analyzer for Elasticsearch
    

    cat shards

    shards命令提供了节点包含哪些分片的详细视图。它会告诉你分片是主分片还是副本分片,文档数量,占用磁盘空间的字节数,以及所在的节点。

    查看所有的分片信息。

    GET _cat/shards?v
    
    # response
    index                    shard prirep state      docs   store ip         node
    logs                     0     p      STARTED       3   3.9kb 172.17.0.2 ece13c2201ae
    logs                     0     r      UNASSIGNED                         
    topic                    0     p      STARTED       2   5.9kb 172.17.0.2 ece13c2201ae
    topic                    0     r      UNASSIGNED                         
    .apm-agent-configuration 0     p      STARTED       0    208b 172.17.0.2 ece13c2201ae
    .apm-custom-link         0     p      STARTED       0    208b 172.17.0.2 ece13c2201ae
    .kibana_1                0     p      STARTED     272 127.5kb 172.17.0.2 ece13c2201ae
    order                    0     p      STARTED    1000 114.2kb 172.17.0.2 ece13c2201ae
    order                    0     r      UNASSIGNED                         
    sale_store_day           0     p      STARTED       2   7.1kb 172.17.0.2 ece13c2201ae
    sale_store_day           0     r      UNASSIGNED                         
    .kibana_task_manager_1   0     p      STARTED       5    24kb 172.17.0.2 ece13c2201ae
    test                     0     p      STARTED       2  11.3kb 172.17.0.2 ece13c2201ae
    test                     0     r      UNASSIGNED                         
    

    查看指定别名/索引的分片信息,支持模糊搜索。

    GET _cat/shards/order?v
    
    # response
    index shard prirep state      docs   store ip         node
    order 0     p      STARTED    1000 114.2kb 172.17.0.2 ece13c2201ae
    order 0     r      UNASSIGNED                         
    

    cat tasks management task

    返回当前在集群中执行的任务的信息,类似于任务管理API。

    GET _cat/tasks?v=true
    
    # response
    action                         task_id                        parent_task_id                 type      start_time    timestamp running_time ip         node
    cluster:monitor/tasks/lists    YWfAPAonTteQ9GO__aOjQw:3028372 -                              transport 1688998957964 14:22:37  20.5ms       172.17.0.2 ece13c2201ae
    cluster:monitor/tasks/lists[n] YWfAPAonTteQ9GO__aOjQw:3028373 YWfAPAonTteQ9GO__aOjQw:3028372 direct    1688998957964 14:22:37  20.4ms       172.17.0.2 ece13c2201ae
    

    cat template

    返回索引模板相关的信息。

    查看所有的模板。

    GET /_cat/templates
    
    # response
    .monitoring-es                  [.monitoring-es-7-*]         0          7000199
    .logstash-management            [.logstash]                  0          
    .management-beats               [.management-beats]          0          70000
    .monitoring-logstash            [.monitoring-logstash-7-*]   0          7000199
    .watches                        [.watches*]                  2147483647 11
    .monitoring-alerts-7            [.monitoring-alerts-7]       0          7000199
    ...
    

    查看某一个指定的模板。

    GET /_cat/templates/.logstash-management?v
    
    # response
    name                 index_patterns order version
    .logstash-management [.logstash]    0     
    

    cat allocation

    提供每个数据节点分配的分片数量及其磁盘空间的快照信息。

    GET /_cat/allocation?v
    
    # response
    shards disk.indices disk.used disk.avail disk.total disk.percent host       ip         node
         9      282.7kb    12.2gb     66.3gb     78.6gb           15 172.17.0.2 172.17.0.2 ece13c2201ae
         5                                                                                 UNASSIGNED
    

    查看指定的某一个节点。

    GET /_cat/allocation/ece13c2201ae?v
    

    cat count

    GET /_cat/count/
    
    GET /_cat/count
    

    target 是一个逗号分隔的数据流、索引和别名列表,用于限制请求的范围。支持使用通配符(*)进行匹配。如果要针对所有数据流和索引进行操作,可以省略该参数,或使用 * 或 _all。

    更多内容->官方文档

    2. cluster api

    集群管理的 API 提供了获取或者更改集群信息的功能,例如集群节点过滤、查看集群信息、查看节点信息、更新集群设置、重置路由等。

    2.1 节点过滤

    # 获取所有节点
    GET /_nodes/_all
    

    除了 _all 以外,还支持以下参数。

    参数 描述
    _all 列出所有节点
    _local 列出本地节点
    _master 列出主节点
    IP 或者主机名字 列出指定 IP 或者主机名字的节点
    节点 ID 或者名称 列出指定 ID 或者名称的节点
    * IP、主机名字、节点 ID、名称都可以包括通配符
    master:true/false 列出主节点 / 不列出主节点
    data:true/false 列出数据节点 / 不列出数据节点
    ingest:true/false 列出索引预处理节点 / 不列出索引预处理节点
    coordinating_only:true/false 列出协调节点 / 不列出协调节点

    2.2 查看集群信息

    可以使用集群信息查看的接口查看集群健康状态、集群状态、集群统计信息、集群的设置等,For Example:

    # 查看集群健康状态
    GET /_cluster/health
    
    # 查看集群状态
    GET /_cluster/state
    
    # 查看集群统计信息
    GET /_cluster/stats?human&pretty
    
    # 查看集群的设置
    GET /_cluster/settings?include_defaults=true
    

    2.3 查看节点信息

    # 获取节点信息的请求格式
    GET /_nodes
    GET /_nodes/
    GET /_nodes/
    GET /_nodes//
    
    # 获取节点信息
    GET /_nodes
    GET /_nodes/node_id1,node_id2 # 获取 node_id1 和 node_id2 的信息
    GET /_nodes/stats 
    GET /_nodes/node_id1,node_id2/stats # 获取 node_id1 和 node_id2 的统计信息
    

    metric 可以指定获取结果中的每个部分。

    2.4 更新集群设置

    For Example:设置集群恢复时的吞吐量,其默认值为 0 的时候为无限制。

    PUT /_cluster/settings
    {
      "persistent": {
        "indices.recovery.max_bytes_per_sec": "100m"
      }
    }
    

    2.5 路由重置

    reroute API 可以允许用户手动修改集群中分片的分配情况。使用 reroute API 可以将一个分片从某个节点移到另一个节点,也可以将未分配的分片指定分配到某个节点。

    POST /_cluster/reroute
    {
      "commands": [
        {
          "move": {
            "index": "test", "shard": 0,
            "from_node": "node1", "to_node": "node2"
          }
        },
        {
          "allocate_replica": {
            "index": "test", "shard": 1,
            "node": "node3"
          }
        }
      ]
    }
    

    如上,使用 "move" 指令,将索引 "test" 的分片 0 从节点 "node1" 移动到了 "node2"。使用 "allocate_replica" 指令将 "test" 索引未分配的分片 1 的副本分配到节点 "node3"。

    在执行了任何路由重置指令后, ES 将会执行重新平衡数据的操作来保持平衡状态,但是这个操作受 cluster.routing.rebalance.enable(是否允许重新平衡) 设置值的影响。

    更多内容->官方文档

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论