根据索引状态文件定位索引名称

在OLAP集群中,由于大量索引和分片导致通过常规命令获取索引信息耗时过长,可能影响业务。解决方法是在Linux上使用curl将结果写入文件,通过索引状态文件(state-*.st)来定位索引名称。这种方法响应快且资源消耗少,但无法获取详细信息。当需要特定索引信息时,可根据path.data配置找到状态文件,尽管显示为乱码,但仍能识别出索引名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

​ 生产上有个 olap 集群,因业务特殊性,导致集群中索引数和索引分片数特别多,集群元数据信息特别庞大,通过 _cat/indices_cat/shards命令去获取索引信息时耗时会特别长,可能导致集群卡顿,影响业务查询、写入,而且会返回超时。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bz0iUoFN-1588584739190)(F:\Typora_picturesPath\image-20200504170329530.png)]

针对返回超时,解决方案是直接在 Linux 机器上,通过 curl 命令,将结果写入到文件里。eg:

curl -XGET http://ip:esClusterHttpPort/_cat/shards?v >shards

# 注意:如果 _cat/shards?v 后面要加其余参数,如 _cat/shards?v&s=node,则要对 & 符号进行转义:
curl -XGET http://ip:esClusterHttpPort/_cat/shards?v\&s=node >shards

索引状态文件

_cat/shards命令比 _cat/indices命令所需消耗的集群资源更少,响应更快,但是无法获取到索引的UUID

生产上出现问题时,可直接通过在Linux机器上,获取到问题索引的UUID,然后进入索引目录下,根据索引状态文件(格式:state-*.st)定位到具体索引名称后,再根据_cat/shards/indexName_cat/indices/indexName命令,去获取单个索引的信息。

索引状态文件路径:由 elasticsearch.yml 中 path.data 配置的路径确定。eg:

path.data/nodes/0/indices/索引UUID/_state/

找到以 *.st 结尾的状态文件后,vim 打开是乱码(因为 *.st 是二进制文件),但仍可以辨别出索引名称。eg:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ETj12cKt-1588584739210)(F:\Typora_picturesPath\image-20200504173039144.png)]
从图中可分辨出索引名称为:.monitoring-es-6-2019.10.29

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值