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

背景

​ 生产上有个 olap 集群,因业务特殊性,导致集群中索引数和索引分片数特别多,集群元数据信息特别庞大,通过 _cat/indices_cat/shards命令去获取索引信息时耗时会特别长,可能导致集群卡顿,影响业务查询、写入,而且会返回超时。
根据索引状态文件定位索引名称_第1张图片

针对返回超时,解决方案是直接在 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:
根据索引状态文件定位索引名称_第2张图片
从图中可分辨出索引名称为:.monitoring-es-6-2019.10.29

你可能感兴趣的:(ElasticSearch,elasticsearch,linux)