前言
Elasticsearch作为非关系型数据库,在某种程度上和关系型数据库相似,作为数据库,我们的主要作用就是存储数据、检索数据;在关系型数据库中,我们可以使用SQL语句和数据库进行交互,而Elasticsearch则为我们提供了丰富的Rest风格的API,通过客户端操作ES本质上依然是Restful API的调用!
ES Restful API GET、POST、PUT、DELETE、HEAD含义(这几个是API的基本概念):
1)GET:获取请求对象的当前状态。
2)POST:改变对象的当前状态。
3)PUT:创建一个对象。
4)DELETE:销毁对象。
5)HEAD:请求获取对象的基础信息。
文档类API
集群管理API
_cat系列
_cat
提供了一系列查询elasticsearch集群状态的接口, 用于获取 Elasticsearch 集群的状态信息,比如节点、索引、分片、健康状态等。它的返回结果以文本格式呈现,易于阅读和理解
[root@genterator opt]# curl localhost:8888/_cat
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks #查看当前的任务信息
/_cat/indices #查看所有索引
/_cat/indices/{index} #查看{index}的索引
/_cat/segments #查看分片信息
/_cat/segments/{index} #查看指定索引分片信息
/_cat/count #查询集群中所有索引的文档数量
/_cat/count/{index} #查询集群中指定索引的文档数量
/_cat/recovery #正在进行的分片恢复操作的状态
/_cat/recovery/{index} #指定索引上正在进行的分片恢复操作的状态
/_cat/health #查询集群健康状态
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
/_cat/ml/anomaly_detectors
/_cat/ml/anomaly_detectors/{job_id}
/_cat/ml/trained_models
/_cat/ml/trained_models/{model_id}
/_cat/ml/datafeeds
/_cat/ml/datafeeds/{datafeed_id}
/_cat/ml/data_frame/analytics
/_cat/ml/data_frame/analytics/{id}
/_cat/transforms
/_cat/transforms/{transform_id}
#以上的命令中,你也可以后面加一个v,让输出内容表格显示表头,如:
[root@genterator opt]# curl localhost:8888/_cat/count?v
epoch timestamp count
1596028395 13:13:15 171
allocation
_cat/allocation
,此API可以查看节点在磁盘的资源分配信息
[root@Genterator opt]# curl http://localhost:9200/_cat/allocation?v
shards disk.indices disk.used disk.avail disk.total disk.percent host ip node
682 125.1gb 166.3gb 329gb 495.4gb 33 10.130.9.253 10.130.9.253 Node-(9.253)
682 77.9gb 88.7gb 906.7gb 995.4gb 8 10.130.11.219 10.130.11.219 Node-(11.219)
681 132.3gb 141.3gb 854.1gb 995.4gb 14 10.130.12.203 10.130.12.203 Node-(12.203)
681 77.8gb 87gb 908.3gb 995.4gb 8 10.130.10.254 10.130.10.254 Node-(10.254)
681 132.4gb 202.4gb 293gb 495.4gb 40 10.130.10.253 10.130.10.253 Node-(10.253)
字段说明:
- shards:分配给每个节点的分片数。这个数字可以用来确定集群中是否有节点承受了过多的负载或者没有均匀地分配分片。如果某个节点上的分片数量远高于其他节点,可能会导致该节点成为瓶颈,影响整个集群的性能。
- disk.indices:每个节点上索引使用的磁盘空间量。这个数字可以用来确定哪些节点的磁盘空间可能不足。如果某个节点的磁盘空间已经接近满了,可能需要添加更多的存储空间或者迁移一些分片到其他节点上。
- disk.used:每个节点上已用的磁盘空间量,包括所有分片和其他数据。
- disk.avail: 每个节点上未使用的磁盘空间量。
- disk.total:每个节点上总共可用的磁盘空间量。
- disk.percent: 每个节点上分配给索引的分片所使用的磁盘空间百分比。
- node:节点的名称。这个信息可以用来确定集群中的每个节点的身份。每个节点都应该有一个唯一的名称,以便在日志和统计数据中区分它们。
shards
/_cat/shards
, 该API可以查询集群中所有分片的详细信息/_cat/shards/{index}
,{index}为具体索引名称,该API可以查询具体索引的分片详细信息
[root@Genterator opt]# curl http://localhost:9200/_cat/shards?v
index shard prirep state docs store ip node
issue-push-topic-2023.05.27 0 p STARTED 2211208 273.6mb 10.130.10.254 Node-(10.254)
abstract9 1 p STARTED 0 208b 10.130.10.254 Node-(10.254)
abstract9 2 p STARTED 0 208b 10.130.12.203 Node-(12.203)
abstract9 0 p STARTED 0 208b 10.130.11.219
字段说明:
- index: 索引名称。
- prirep: 分片是主分片(“p”)还是副本分片(“r”)。
- state: 分片的状态,例如 “STARTED”、“RELOCATING” 或 “UNASSIGNED”。
- docs: 分片包含的文档数量。
- store: 分片存储的磁盘空间量。
- ip: 存储该分片的节点的 IP 地址。
- node: 存储该分片的节点的名称。
master
_cat/master
, 该API可以查询所有主节点的信息Elasticsearch 集群只会有一个主节点。该节点负责协调集群中的所有操作,并确保复制和分片合并等任务得到正确执行
[root@Genterator opt]# curl http://localhost:9200/_cat/master
id host ip node
pjAwBikYSxK_FKFT1UnbeQ 10.130.9.253 10.130.9.253 Node-(9.253)
字段说明:
- id:节点的唯一标识符
- host:节点的主机名
- ip:节点的 IP 地址
- node:节点名称
nodes
_cat/nodes
, 该API可以查询节点信息它返回一个表格,列出了集群中所有节点的详细信息,包括节点名称、IP 地址、节点角色、JVM 版本、操作系统、CPU 使用率、内存使用率等等。这个 API 对于监控和调试 Elasticsearch 集群非常有用,可以帮助管理员快速了解节点的状态和性能。
GET _cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10.130.10.254 71 96 18 2.39 2.42 2.49 cdhilmrstw - Node-(10.254)
10.130.9.253 72 99 12 1.34 1.22 1.20 cdhilmrstw * Node-(9.253)
10.130.12.203 71 98 2 0.02 0.15 0.21 cdhilmrstw - Node-(12.203)
10.130.10.253 61 99 17 2.60 2.52 2.57 cdhilmrstw - Node-(10.253)
10.130.11.219 65 96 1 0.14 0.27 0.32 cdhilmrstw - Node-(11.219)
字段说明:
- ip: node节点的IP
- heap.percent: 堆内存占用百分比
- ram.percent: 内存占用百分比
- cpu: CPU占用百分比
- load_1m: 1分钟的系统负载
- load_5m: 5分钟的系统负载
- load_15m: 15分钟的系统负载
- node.role: node节点的角色
- master:是否是master节点
- name:节点名称
health
_cat/health
, 该接口用于查询集群健康状态
GET _cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1685016019 12:00:19 PUBLIC-ELK-UAT green 5 5 3442 3224 0 0 0 0 - 100.0%
字段说明:
- 名称: 描述
- epoch: 自标准时间(1970-01-01 00:00:00)以来的秒数
- timestamp: 时间
- cluster: 集群名称
- status: 集群状态
- node.total: 节点总数
- node.data: 数据节点总数
- shards: 分片总数
- pri: 主分片总数
- repo: 复制节点的数量
- init: 初始化节点的数量
- unassign: 未分配分片的数量
- pending_tasks: 待定任务数
- max_task_wait_time: 等待最长任务的等待时间
- active_shards_percent: 活动分片百分比
shards
_cat/shards
, 该API可以查询集群中所有索引的分片信息
GET _cat/shards/expis-issue-report-info-202305?v
index shard prirep state docs store ip node
expis-issue-report-info-202305 0 p STARTED 32 329.8kb 10.130.10.253 Node-(10.253)
expis-issue-report-info-202305 0 r STARTED 32 325.3kb 10.130.9.253 Node-(9.253)
expis-issue-report-info-202305 1 p STARTED 24 182.1kb 10.130.9.253 Node-(9.253)
expis-issue-report-info-202305 1 r STARTED 24 182.1kb 10.130.11.219 Node-(11.219)
expis-issue-report-info-202305 2 p STARTED 26 92.1kb 10.130.11.219 Node-(11.219)
expis-issue-report-info-202305 2 r STARTED 26 92.1kb 10.130.10.254 Node-(10.254)
expis-issue-report-info-202305 3 p STARTED 32 92.8kb 10.130.10.254 Node-(10.254)
expis-issue-report-info-202305 3 r STARTED 32 92.8kb 10.130.12.203 Node-(12.203)
expis-issue-report-info-202305 4 r STARTED 24 106.6kb 10.130.10.253 Node-(10.253)
expis-issue-report-info-202305 4 p STARTED 24 106.6kb 10.130.12.203 Node-(12.203)
expis-issue-report-info-202305 5 p STARTED 34 298.4kb 10.130.10.253 Node-(10.253)
expis-issue-report-info-202305 5 r STARTED 34 122.1kb 10.130.9.253 Node-(9.253)
字段说明:
- index: 索引名称
- shard: 分片序号
- prirep: 分片类型,p表示是主分片,r表示是复制分片
- state: 分片状态
- docs: 该分片存放的文档数量
- store: 该分片占用的存储空间大小
- ip: 该分片所在的服务器ip
- node: 该分片所在的节点名称
indices
_cat/indices
, 该API接口用于获取集群中所有索引的详细信息/_cat/indices/{index}
,用于查看指定索引的详细信息
GET _cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open ecs-trade-topic-2023.05.29 51AD0AMZT3eo-Mz3L4_FTQ 1 0 15533 0 7.7mb 7.7mb
green open issue-inner-api-topic-2023.05.30 rRArQPxuQQqlWewxUfgeCg 1 0 2623106 0 1gb 1gb
green open yto_a_10031_topic-2023.05.18 nM4kRuvVTryuCWbpt88evA 1 0 50954 0 13.4mb 13.4mb
green open yto_a_10031_topic-2023.05.19 9vbk8vUHRmqbSvHwSGdPpw 1 0 45344 0 19.8mb 19.8mb
字段说明:
- health: 索引的健康状态
- status: 索引的开启状态
- index: 索引名字
- uuid: 索引的uuid
- pri: 索引的主分片数量
- rep: 索引的复制分片数量
- docs.count: 索引下的文档总数
- docs.deleted: 索引下删除状态的文档数
- store.size: 主分片+复制分片的大小
- pri.store.size: 主分片的大小
_cluster系列
_cluster
命令提供了一系列elasticsearch集群操作的接口, 用于管理 Elasticsearch 集群的配置和状态,比如创建、删除索引,设置集群级别的参数等。它的返回结果以 JSON 格式呈现,需要进行解析和处理
health
_cluster/health
:获取集群的健康状态
[root@Genterator opt]# curl -X GET http://localhost:9200/_cluster/health?pretty=true
{
"cluster_name" : "es-cluster",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 11,
"active_shards" : 11,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
stats
_cluster/stats
是 Elasticsearch 的一个 API 命令,用于获取整个集群的统计信息,包括节点、索引、分片等。返回结果以 JSON 格式呈现,需要进行解析和处理。
使用 _cluster/stats
命令可以获取以下信息:
- 集群的基本统计信息,包括集群名称、节点数量、索引数量、分片数量等。
- 集群的健康状态,包括簇内节点数量、可用节点数量、分片状态等。
- 集群的节点统计信息,包括每个节点的内存使用情况、CPU 使用情况、磁盘使用情况等。
- 集群的索引统计信息,包括每个索引的文档数量、存储空间、分片数量等。
[root@Genterator opt]# curl -X GET http://localhost:9200/_cluster/stats?pretty=true
{
"_nodes" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"cluster_name" : "PUBLIC-ELK-UAT",
"cluster_uuid" : "StUim7arRyO1Ti1RvAjdIQ",
"timestamp" : 1685513640223,
"status" : "green",
"indices" : {
"count" : 2064,
"shards" : {
"total" : 3505,
"primaries" : 3310,
"replication" : 0.05891238670694864,
"index" : {
"shards" : {
"min" : 1,
"max" : 24,
"avg" : 1.6981589147286822
},
"primaries" : {
"min" : 1,
"max" : 24,
"avg" : 1.6036821705426356
},
"replication" : {
"min" : 0.0,
"max" : 1.0,
"avg" : 0.03924418604651163
}
}
},
…………
state
_cluster/state
是 Elasticsearch 的一个 API 命令,用于获取整个集群的状态信息,包括节点、索引、分片等。返回结果以 JSON 格式呈现,需要进行解析和处理。
使用 _cluster/state
命令可以获取以下信息:
- 集群的元数据信息,包括节点、索引、分片、映射关系等。
- 集群的健康状态,包括簇内节点数量、可用节点数量、分片状态等。
- 集群的设置信息,包括索引级别和集群级别的设置。
[root@Genterator opt]# curl -X GET http://localhost:9200/_cluster/state?pretty=true
{
"cluster_name" : "es-cluster",
"cluster_uuid" : "JS-w67X-RLiSWNqTKtwV1g",
"version" : 185,
"state_uuid" : "tXt9qKT3TU-XuA-zGtgvLQ",
"master_node" : "CQ7D0x6rTi6p3bNNBsTQiw",
"blocks" : { },
"nodes" : {
"CQ7D0x6rTi6p3bNNBsTQiw" : {
"name" : "es-single",
"ephemeral_id" : "hzv26YNHRGWch0SIS5fpAg",
"transport_address" : "172.30.0.2:9300",
"attributes" : {
"ml.machine_memory" : "1073741824",
"xpack.installed" : "true",
"transform.node" : "true",
"ml.max_open_jobs" : "512",
"ml.max_jvm_size" : "536870912"
},
……
pending_tasks
查询集群堆积任务
[root@Genterator opt]# curl -X GET http://localhost:9200/_cluster/pending_tasks?pretty=true
{
"tasks" : [ ]
}
setting
_cluster/settings
是 Elasticsearch 的一个 API 命令,用于获取或修改整个集群的设置。返回结果以 JSON 格式呈现,需要进行解析和处理。
使用 _cluster/settings
命令可以获取或修改以下设置:
- 集群的持久化设置,包括集群名称、节点发现、集群路由等。
- 集群的临时性设置,包括自动创建索引、自动扩容、索引的分配等。
- 集群的默认设置,包括分片和副本的数量、索引的刷新间隔、索引的存储设置等。
[root@Genterator opt]# curl -X GET http://localhost:9200/_cluster/settings -d '{
“persistent” : {
“discovery.zen.minimum_master_nodes” : 2
}
}'
#transient 表示临时的,persistent表示永久的
reroute
/_cluster/reroute
是 Elasticsearch 的一个 API 命令,用于手动控制分片在节点之间的分配。通过该命令,你可以手动将某个分片从一个节点转移到另一个节点,或者将某个分片从一个节点的某个索引中移除。
使用 /_cluster/reroute
命令可以完成以下操作:
- 将某个分片从一个节点转移到另一个节点。
- 将某个分片从一个节点的某个索引中移除。
- 将某个分片从一个节点的某个索引中移除,并将该分片转移到另一个节点。
- 将某个节点上的所有分片转移到其他节点上。
#该请求将把 my_index 索引中的第 0 个分片从 node1 节点转移到 node2 节点
[root@Genterator opt]# curl -X POST http://localhost:9200/_cluster/reroute -H 'Content-Type: application/json' -d'
{
"commands" : [
{
"move" : {
"index" : "my_index",
"shard" : 0,
"from_node" : "node1",
"to_node" : "node2"
}
}
]
}
'
nodes
/_cluster/nodes
是 Elasticsearch 的一个 API 命令,用于获取集群中的节点信息。该命令返回一个 JSON 对象,其中包含了集群中所有节点的详细信息,例如节点 ID、节点名称、节点 IP 地址、节点角色等。
使用 /_cluster/nodes
命令可以完成以下操作:
- 获取集群中所有节点的信息。
- 获取特定节点的信息。
- 获取特定节点的详细信息,包括该节点上运行的所有索引、分片状态等。
-
/_cluster/nodes
命令返回的信息可能比较多,如果只需要获取某些特定的信息,可以在请求 URL 中添加查询参数, 如:curl -X GET “localhost:9200/_cluster/nodes?filter_path=nodes..name,nodes..ip”
#关闭指定IP节点
curl -XPOST ‘http://172.30.0.2:8888/_cluster/nodes/_local/_shutdown’
curl -XPOST ‘http://localhost:8888/_cluster/nodes/172.30.0.2/_shutdown’
#关闭主节点
curl -XPOST ‘http://localhost:8888/_cluster/nodes/_master/_shutdown’
#关闭整个集群 delay=10s表示延迟10秒关闭
$ curl -XPOST ‘http://localhost:8888/_shutdown?delay=10s’
$ curl -XPOST ‘http://localhost:8888/_cluster/nodes/_shutdown’
$ curl -XPOST ‘http://localhost:8888/_cluster/nodes/_all/_shutdown’
_nodes系列
/_nodes
是 Elasticsearch 的一个 API 命令,用于获取集群中的节点信息。该命令返回一个 JSON 对象,其中包含了集群中所有节点的详细信息,例如节点 ID、节点名称、节点 IP 地址、节点角色等。
使用 /_nodes
命令可以完成以下操作:文章来源:https://www.toymoban.com/news/detail-805286.html
- 获取集群中所有节点的信息。
- 获取特定节点的信息。
- 获取特定节点的详细信息,包括该节点上运行的所有索引、分片状态等。
需要注意的是,/_nodes
命令返回的信息比较详细,如果只需要获取某些特定的信息,可以在请求 URL 中添加查询参数,例如:文章来源地址https://www.toymoban.com/news/detail-805286.html
curl XGET "http://localhost:9200/_nodes?filter_path=nodes.*.name,nodes.*.ip,nodes.*.jvm.mem.heap_used_percent"
curl -XGET http://localhost:9200/_nodes/stats?pretty=true
curl -XGET http://localhost:9200/_nodes/47.97.176.22/stats?pretty=true
curl -XGET http://localhost:9200/_nodes/process
curl -XGET http://localhost:9200/_nodes/_all/process
curl -XGET http://localhost:9200/_nodes/47.97.176.22,47.97.176.223/jvm,process
curl -XGET http://localhost:9200/_nodes/47.97.176.22,47.97.176.223/info/jvm,process
curl -XGET http://localhost:9200/_nodes/47.97.176.22,47.97.176.223/_all
curl -XGET http://localhost:9200/_nodes/hot_threads
到了这里,关于ES基础篇 常用API之集群类API的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!