今天继续给大家介绍Linux运维相关知识,本文主要内容是Elasticsearch索引管理。
今天,我们来介绍几个用于Elasticsearch索引管理的命令,可以在没有安装Head插件的情况下查看我们的索引。
一、索引查看
首先,我们可以通过访问X.X.X.X:9200/_cat/indices?v的方式来查看索引。
例如,在Linux系统上,执行命令:
curl 192.168.136.101:9200/_cat/indices?v
结果如下:
二、索引删除
在查询出所有索引的基础上,我们还可以删除我们不需要的索引。
(一)删除指定索引
执行命令:
curl -XDELETE -u elasticsearch:changme http://X.X.X.X:9200/【索引名称】
可以删除指定的索引,如下所示:
如果我们想要删除多个索引,我们可以采用上述方式,用逗号间隔多个索引,这样就可以将这些索引全部删除了。
(二)索引模糊匹配删除
此外,我们在索引中添加星号(*),可以采用模糊匹配的方式,删除多个索引。
如执行命令:
curl -XDELETE -u elasticsearch:changeme http://192.168.136.101:9200/filebeat*
则会删除设备上所有以filebeat开头的索引,该命令执行结果如下:
以此类推,我们可以使用下面这条命令删除所有索引:
curl -XDELETE -u elasticsearch:changeme http://192.168.136.101:9200/*
实际上,Elasticsearch中提供了删除所有索引的命令,执行下面这条命令:
curl -XDELETE -u elasticsearch:changeme http://192.168.136.101:9200/_all
可以起到与上面那条命令完全相同的结果。
三、禁用索引通配符
尽管使用通配符可以快的删除索引,但是在通配符使用时,稍有不慎就会造成严重的后果,比如误删除有用的索引。因此,在生产环境中,我们通常都会禁用索引通配符,包括上面那个_all的删除所有索引的命令。
打开Elasticsearch配置文件/etc/elasticsearch/elasticsearch.yml,找到action.destructive_requires_name参数,该参数默认在注释中,并不会生效,我们取消掉该参数的注释,然后重启Elasticsearch,即可禁用通配符和删除所有索引的指令。
配置完成后的配置文件如下所示:
完成配置后,当我们想要使用通配符或者是_all命令时,就会报错,如下所示:
四、定时删除索引
由于日志量的不断增大,我们有时会设置定时删除索引的定时任务。加入我们要删除三天前的索引,那么我们可以根据索引的时间戳来删除索引。
如何生产三天前的时间戳呢?
我们可以使用date命令,如下:
date -d '3days' +'%Y.%m.%d'
因此,我们可以写定时任务如下:
30 3 * * * /usr/local/curl -XDELETE -u elasticsearch:changeme http://192.168.136.101:9200/*-$(date -d '-3days' +%Y.%m.%d) >/dev/null 2>&1
完成后的结果如下:
这样,在每天的三点半,该命令就会自动执行,删除三天前的索引了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200