ElasticSearch——cat指令

在前面的文章中,我们学习了海量数据下使用热冷数据分离的方法来提高ElasticSearch的检索性能。使用这种机制好处非常明显,能够极大地提高查询频率高的数据的检索性能。不过它也带来了集群管理的复杂度的提升:大量的索引、索引相关的分片以及副本、分片的迁移以及合并、段合并。因此需要我们对Elasticsearch的运行进行一定的监控,以确保数据的正常存储以及检索。

cat指令是比较基本的查看指令。本文是对cat指令的学习整理。

cat指令的通用参数

  • v

    在请求的时候加入v参数,可以返回更详细的信息

  • help

    在请求的时候加入help参数,可以返回每个字段(每一列)的说明

  • headers

    在请求的时候加入h参数,可以返回指定的几列。

    比如:curl "http://10.0.23.133:9200/_cat/nodes?v&h=ip,port,heapPercent,name",返回ip,port,heapPercent,name四个列。

    也可以使用通配符,比如/_cat/thread_pool?h=ip,queue*,获得所有以queue开头的列

  • 数字格式

    可以添加不同的参数来改变数字格式:

    比如curl "http://10.0.23.133:9200/_cat/indices?v&bytes=b"返回以Bytes为单位的数值,curl "http://10.0.23.133:9200/_cat/indices?v&bytes=m"返回以Megabytes为单位的数值。

    • 如果改变的是时间单位,使用time参数
    • 如果改变的是大小单位,使用size参数
    • 如果改变的是字节单位,使用bytes参数
  • 返回数据的格式

    在请求的时候加入format参数可以指定返回数据的格式。可以从textjsonsmileyamlcbor中选择。

  • 排序

    在请求的时候加入s参数可以按指定的列排序。在列的后面加上:desc则按列降序排列,在列的后面加上:asc则按列升序排列。

    比如:curl "http://10.0.23.133:9200/_cat/indices?v&s=store.size:desc"

cat aliases

/_cat/aliases指令显示当前的所有的别名

命令示例:

curl "http://10.0.23.133:9200/_cat/aliases?v&s=index"

cat_aliases

如果只查看某几个别名,可以在url后直接加上别名:

curl "http://10.0.23.133:9200/_cat/aliases/pedestrian

cat allocation

/_cat/allocation指令显示每个节点中被分配了多少个分片,以及使用了多少磁盘空间

示例:

curl "http://10.0.23.133:9200/_cat/allocation?v"

cat count

/_cat/count指令显示整个集群有多少文档,或者一个索引有多少文档。

示例:

1
2
curl "http://10.0.23.133:9200/_cat/count?v"
curl "http://10.0.23.133:9200/_cat/count/pedestrian?v"

cat fielddata

/_cat/fielddata指令显示集群中每个节点有多少内存被fielddata所使用。

示例:

1
curl "http://10.0.23.133:9200/_cat/fielddata?v"

cat health

/_cat/health指令显示集群的健康度。

1
curl "http://10.0.23.133:9200/_cat/health?v"

指令返回集群状态、节点数量、分片数、未分配分片的数量等信息。使用该指令可以监控各个节点的状态、集群状态的变化。如果长时间出现未分配的分片,我们需要去查询出了什么问题。

cat indices

/_cat/indices指令用于查询索引的状态。

指令返回索引的分片数量,文档数量,被删除的文档数,主分片的大小,分片总的大小。

1
curl "http://10.0.23.131:9200/_cat/indices/pede*?v&s=index"

cat_indices

cat master

/_cat/master指令仅仅显示主节点的id,ip,名称。

示例:

curl "http://10.0.23.133:9200/_cat/master?v"

cat nodeattrs

/_cat/nodeattrs指令显示节点的属性。

示例:

curl "http://10.0.23.133:9200/_cat/nodeattrs?v"

指令返回node、id(默认无)、pid(默认无)、host、ip、port(默认无)、属性以及属性值。

cat nodes

/_cat/nodes指令显示集群中各个节点的信息。包含堆使用率、内存使用率、CPU使用率、系统负载等。

示例:

curl "http://10.0.23.133:9200/_cat/nodes?v"

cat pending tasks

/_cat/pending_tasks指令显示集群中等待执行的任务

示例:

curl "http://10.0.23.133:9200/_cat/pending_tasks?v"

cat plugins

/_cat/plugins指令显示正在运行的插件。

示例:

curl "http://10.0.23.133:9200/_cat/plugins?v"

cat recovery

/_cat/recovery指令显示了索引分片恢复的视图,包括正在执行和已经完成的任务。

recovery过程发生在索引分片从集群的一个节点移动到另一个节点。这个移动操作会发生在:快照恢复、副本发生改变、节点故障、节点启动。节点启动被称为本地存储恢复,节点启动时从磁盘中加载数据分片。

示例:

1
curl "http://10.0.23.131:9200/_cat/recovery/pede*?v&h=i,s,t,ty,st,shost,thost,f,fp,b,bp"

cat_recovery

从上图中,我们可以看到,有许多数据分片正在执行节点间的迁移,一些分片已经迁移完毕。

cat shards

/_cat/shards指令显示索引拥有的数据分片,分片所在的节点,以及分片的文档数量与大小。

示例:

1
curl "http://10.0.23.131:9200/_cat/shards/pede*?v&s=index"

cat_shards

从上图中,我们可以看出其中一个分配正在进行迁移,它的状态为RELOCATING

当一个分配新建的时候,它的状态为INITIALIZING。当一个分配无法被分配,它的状态为UNASSIGNED

cat segments

/_cat/segments指令显示索引中分片的segment信息。

示例:

1
curl "http://10.0.23.131:9200/_cat/segments/pedestrian-*?v&s=index"

cat_segments

从上面的图片,我们可以看到一个分片就拥有许许多多的segment。

当某个索引完成force merge之后,分片中的segment就会变为一个。如下图所示,shrink-pedestrian-000032经过shrink以及force merge,它就只拥有一个分片以及一个segment。

1
curl "http://10.0.23.131:9200/_cat/segments/shrink-pedestrian-000032?v&s=index"

cat_segments_onesegment

我们还可以使用下面的指令来查看索引中segment的详细信息:

1
curl "http://10.0.23.131:9200/shrink-pedestrian-000064/_segments"

cat_index_segments

shrink-pedestrian-000064完成force merge之后,就只剩下一个segment

cat_index_segments_aftershrink

cat thread_pool

/_cat/thread_pool指令显示集群中每个节点的线程池信息。默认返回正在执行的、排队中的、被拒绝的任务。

示例:

1
curl "http://10.0.23.131:9200/_cat/thread_pool?v"

cat_threadpoo

cat templates

/_cat/templates指令显示了索引模板的信息

示例:

curl "http://10.0.23.133:9200/_cat/templates?v"

cat repositories

_cat/repositories指令显示了注册在集群中的快照仓库

示例:

curl "http://10.0.23.133:9200/_cat/repositories?v"

cat snapshots

_cat/snapshots指令显示了某个仓库下的所有快照

示例:

curl "http://10.0.23.133:9200/_cat/snapshots/repo1?v

https://www.elastic.co/guide/en/elasticsearch/reference/current/cat.html