elasticsearch(四) 之 elasticsearch常用的一些集群命令
目录
elasticsearch常用的一些集群命令
集群
命令 | 说明 |
---|---|
GET /_cat/health?v | 查看集群的健康状态。集群状态包括green、red、yellow,各状态的具体说明请参见查看集群健康状态。 |
GET /_cluster/health?pretty=true | 查看集群的健康状态。pretty=true 表示格式化输出。您也可以添加其他查询参数,例如:level=indices :显示索引状态。level=shards :显示分片信息。 |
GET /_cluster/stats | 查看集群的系统信息。包括CPU、JVM等信息。 |
GET /_cluster/state | 查看集群的详细信息。包括节点、分片等信息。 |
GET /_cluster/pending_tasks | 查看集群中堆积的任务。 |
GET /_cluster/settings | 查看集群设置。 |
节点
命令 | 说明 |
---|---|
GET /_cat/master?v | 查看集群中Master节点的信息。 |
GET /_cat/nodes?v | 查看集群中各个节点的当前状态。包括节点CPU使用率、HeapMemory使用率、负载情况等。 |
GET /_cat/nodeattrs?v | 查看单节点的自定义属性。 |
GET /_nodes/stats?pretty=true | 查看节点状态。 |
GET /_nodes/process | 查看节点的进程信息。 |
GET /_nodes/hot_threads | 查看高消耗的线程所执行的任务。 |
GET /_nodes/ |
查看指定节点的JVM、进程和操作系统信息。 |
GET _cat/plugins?v | 查看各节点的插件信息。 |
GET /_cat/thread_pool?v | 查看各节点的线程池统计信息。包括线程池的类型、活跃线程数、任务队列大小等。 |
分片
命令 | 说明 |
---|---|
GET /_cat/shards?v | 查看集群中各分片的详细情况。包括索引名称、分片编号、是主分片还是副分片、分片的当前状态(对于分配失败的分片会有失败原因)、doc数量、磁盘占用情况等。您也可以指定index,查看该index的分片信息(GET _cat/shards/<index>?v )。 |
GET /_cat/allocation?v | 查看集群中每个节点的分片分配情况。 |
GET /_cat/recovery?v | 查看集群中每个分片的恢复过程。 |
Segments
GET /_cat/segments?v
查看集群中各索引的segment信息。包括segment名称、所属shard、内存或磁盘占用大小、是否刷盘等。您也可以指定index,查看该index的segment信息(GET _cat/segment/<index>?v
)。
索引
命令 | 说明 |
---|---|
GET /_cat/indices?v | 查看集群中所有索引的详细信息。包括索引的健康度、状态、分片数和副本数、包含的文档数等。您也可以查看指定索引的信息(GET _cat/indices/<index>?v )。 |
GET /_cat/aliases?v | 查看集群中所有aliases(索引别名)的信息。包括aliases对应的索引、路由配置等。 |
Mapping
命令 | 说明 |
---|---|
GET /_mapping | 查看集群中所有索引的Mapping。 |
GET /<index>/<type>/_mapping |
查看指定索引的Mapping。 |
文档
命令 | 说明 |
---|---|
GET /_cat/count?v | 查看集群中的文档数量。您也可以指定index,查看该index的文档数量(GET _cat/count/<index>?v )。 |
GET /<index>/<type>/<id> |
查看文档中的数据。 |
快照
命令 | 说明 |
---|---|
GET _snapshot/_all | 查看所有快照。 |
GET _snapshot/<snapshot_name>/_status |
查看指定快照的进度。 |
查看集群健康状态
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
1543918646 18:17:26 haha-elk yellow 1 1 3481 3481 0 0 3480 0 - 50.0%
时间戳 utc时间 集群名称 集群状态 总的节点数 储存节点 分片数量 复制分片数量
主要讲下 status
集群的状态有三种 green,yellow,red
- green 集群状态健康完善
- yellow 所有数据可用,但没有副本,当我们是单点集群的时候,我们就是yellow状态
- red 某些数据由于某种原因不可用。
查看集群的节点列表
get请求
/_cat/nodes?v
通过这个命令我们可以查看我们集群中有几个节点
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1 72 89 9 0.23 0.26 0.21 mdi * haha-elastic-1
地址 堆所占百分比 内存使用的百分比 cpu 负载 1分钟 2分钟 15分钟(top) 是否为主节点 节点名称
查看所有的索引
get请求
/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open ljf-order-service-2018-10-04 XhIN9cfFTO6ZaGLg4Ucuog 5 1 2874 0 1.1mb 1.1mb
yellow open ljf-account-service-2018-11-01 1NXXkKZnSxub5quXwNQqUQ 5 1 7603 0 2.4mb 2.4mb
健康状态 状态 索引名称 id 主分片 一个副本(默认值) 文档数量 删除文档的数量 大小 副本大小
您可能还注意到客户索引标记了黄色运行状况。回想一下我们之前的讨论,黄色表示某些副本尚未(尚未)分配。此索引发生这种情况的原因是因为默认情况下Elasticsearch为此索引创建了一个副本。由于我们目前只有一个节点在运行,因此在另一个节点加入集群的较晚时间点之前,尚无法分配一个副本(用于高可用性)。将该副本分配到第二个节点后,此索引的运行状况将变为绿色。
删除索引
get请求
XDELETE /'索引名称'?pretty
删除成功返回值
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
查询索引的某个文档内容
get请求
/indexname/type/id
indexname ---> 索引名称 示例:l1-online-h5-service-2018-12-05
type ---> 文档类型 (一般为doc)
id ---> id值
更新文档
elasticsearch 更新文档的时候是会删除旧的文档,给新的文档编制索引。
POST /indexname/type/id/_update?pretty
{
"doc": { "name": "Jane Doe" }
}
删除文档
DELETE /indexname/type/id?pretty
查看分片的分布和里面文档的大小
get 请求
/_cat/shards?v
返回内容解析
index(索引名称) shard(分片位置) prirep(主分片还是副本) state(状态) docs(文档数量) store(储存大小) ip(节点地址) node(节点名称)
ljf-online-user-service-2018-11-13 2 p STARTED 4189 2.1mb 172.16.2.208 djx-elastic-1
ljf-online-user-service-2018-11-13 2 r STARTED 4189 2.1mb 172.16.2.209 djx-elastic-2
ljf-online-user-service-2018-11-13 3 p STARTED 4172 2.1mb 172.16.2.208 djx-elastic-1
ljf-online-user-service-2018-11-13 3 r STARTED 4172 2.1mb 172.16.2.209 djx-elastic-2
ljf-online-user-service-2018-11-13 1 p STARTED 4110 2.1mb 172.16.2.208 djx-elastic-1
截止LUCENE-5843,最大文档数限制是2,147,483,519(= Integer.MAX_VALUE - 128)文档。
自动创建索引
elasticsearch.yml 下的action.auto_create_index
默认是开启的,如果我们需要关闭的话,我们需要允许x-apck去创建索引。
添加以下内容:
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*
定时删除索引
#!/bin/bash
######################################################
# $Name: clean_amazon_index.sh
# $Version: v1.0
# $Function: clean amazon log index
# $Author: djx
# $Create Date: 2017-10-18
# $Description: shell
######################################################
#本文未加文件锁,需要的可以加
#脚本的日志文件路径
CLEAN_LOG="/var/log/clean_amazon_index.log"
#索引前缀
INDEX_PRFIX="amazon-mysql-log"
#elasticsearch 的主机ip及端口
SERVER_PORT=192.168.1.123:9200
#取出已有的索引信息
INDEXS=$(curl -s "${SERVER_PORT}/_cat/indices?v" |grep "${INDEX_PRFIX}"|awk '{print $3}')
#删除多少天以前的日志,假设输入10,意味着10天前的日志都将会被删除
DELTIME=10
# seconds since 1970-01-01 00:00:00 seconds
SECONDS=$(date -d "$(date +%F) -${DELTIME} days" +%s)
#判断日志文件是否存在,不存在需要创建。
if [ ! -f "${CLEAN_LOG}" ]
then
touch "${CLEAN_LOG}"
fi
#删除指定日期索引
echo "----------------------------clean time is $(date +%Y-%m-%d_%H:%M:%S) ------------------------------" >>${CLEAN_LOG}
for del_index in ${INDEXS}
do
indexDate=$( echo ${del_index} |cut -d "-" -f 4,5,6 )
#根据索引的名称的长度进行切割,不同长度的索引在这里需要进行对应的修改
indexSecond=$( date -d ${indexDate} +%s )
if [ $(( $SECONDS- $indexSecond )) -gt 0 ]
then
echo "${del_index}" >>${CLEAN_LOG}
#取出删除索引的返回结果
delResult=`curl -s -XDELETE "${SERVER_PORT}/"${del_index}"?pretty" |sed -n '2p'`
#写入日志
echo "clean time is $(date)" >>${CLEAN_LOG}
echo "delResult is ${delResult}" >>${CLEAN_LOG}
fi
done
最后添加到定时任务即可。
作者:理想三旬
本人承接各种项目维护和python项目开发, 如果觉得文章写得不错,或者帮助到您了,请点个赞,加个关注哦。运维学习交流群:544692191
本文版权归作者所有,欢迎转载,如果文章有写的不足的地方,或者是写得错误的地方,请你一定要指出,因为这样不光是对我写文章的一种促进,也是一份对后面看此文章的人的责任。谢谢。