根据配置实现不同ES索引保留天数不同

标签: es 索引 | 发表时间:2020-04-22 15:27 | 作者:dai_lm
出处:https://www.iteye.com
由于ES接入的项目变多,之前所有索引都保留30天,现在需要根据业务不同,索引保留的天数可以配置,所以写了shell命令,可以根据配置删除过期索引,配合cron执行

索引按照天进行分隔,格式统一为:xxxx_yyyy.mm.dd

#/bin/bash


ES_URL="http://127.0.0.1:9200" #填写你的es对外http连接地址
ES_USER="username" #name代表你的你的es用户名
ES_PASSWORD="password" #password代表你的es用户密码


delete_index() {
    echo -e "\nstart close and delete $1 days index"
    beforeday=$(date -d '-'$1'days' +'%Y%m%d')
    for i in `cat ./del_es_index_$1`; do
        echo -e "\nstart to detect index of $i"
        index_seq=`curl -s -u $ES_USER:$ES_PASSWORD $ES_URL/_cat/indices | awk '{print $3}' | grep "$i" | sort -n | sed -r 's/$i_(.*)/\1/'`
        for j in `echo $index_seq`;do
            indexday=`echo ${j:0-10}`
            indexFormatDate=`echo $indexday | head -n 1 | sed 's/\.//g'`
            if [[ $beforeday -ge $indexFormatDate ]]; then
                echo -e "\n$(date '+%Y-%m-%d %H:%M:%S')   es_index match successful,当前索引:\e[0;35m$j\e[0m"
                curl -XPOST -u $ES_USER:$ES_PASSWORD "$ES_URL/$j/_close"
                echo -e "$(date '+%Y-%m-%d %H:%M:%S')   索引\e[0;35m$j\e[0m, 关闭完成"
                if [[ ` echo $? ` == 0 ]];then
                    curl -XDELETE -u $ES_USER:$ES_PASSWORD "$ES_URL/$j"
                    echo -e "$(date '+%Y-%m-%d %H:%M:%S')   索引\e[0;35m$j\e[0m, 删除完成"
                else
                    echo -e "$(date '+%Y-%m-%d %H:%M:%S')   索引\e[0;35m$j\e[0m, 关闭失败,无法进行删除"
                fi
            else
                echo -e "\n$(date '+%Y-%m-%d %H:%M:%S')   es_index match fail,当前索引:\e[0;35m$j\e[0m"
                echo -e "$(date '+%Y-%m-%d %H:%M:%S')   索引\e[0;35m$j\e[0m, 没有过期,不需要关闭,over.."
            fi
        done
    done
}


delete_index 7 # 索引保留7天
delete_index 15 # 索引保留15天



在shell文件同目录放del_es_index_7,del_es_index_15两个文件,里面是需要保留7天或15天的索引名,不包括_yyyy.mm.dd,每个索引一行

如果要增加一个保留3天的配置,则新建del_es_index_3文件,并在shell里添加
delete_index 3 # 索引保留3天


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [es 索引] 推荐:

索引表和ES的一点点思考 - CSDN博客

- -
在电商项目中,物理库存系统是个极其重要的系统,订单支付后,就会开始来占用物理库存. 一般情况下,库存系统都是要分库的,因为主要的操作是写操作,例如占用/释放/取消等写操作. 使用分库可以降低数据库写的压力. 尽管写操作为主,但是读操作也是有的. 比如说,库存占用的时候,得先查询是否有库存,而这个查询操作并不都会带上分库因子(用于路由到具体的某个数据库),而是一些比较宽松的查询条件,这些查询条件对应的数据可能分布在不同的数据库上.

ES中的索引生命周期管理

- - JenkinWang's Blog
ILM:索引生命周期管理,即 Manage the index lifecycle. 使用 ILM应确保集群中的所有节点运行的是同一个版本,不然无法保证他们会按预期工作. Hot:索引更新和查询很活跃. Warm:索引不再更新,但仍然有查询. Cold:索引不再更新,只有很少的查询,而且查询速度也很慢.

根据配置实现不同ES索引保留天数不同

- - 开源软件 - ITeye博客
由于ES接入的项目变多,之前所有索引都保留30天,现在需要根据业务不同,索引保留的天数可以配置,所以写了shell命令,可以根据配置删除过期索引,配合cron执行. 索引按照天进行分隔,格式统一为:xxxx_yyyy.mm.dd. #/bin/bash ES_URL="http://127.0.0.1:9200" #填写你的es对外http连接地址 ES_USER="username" #name代表你的你的es用户名 ES_PASSWORD="password" #password代表你的es用户密码 delete_index() {.

ES优化总结

- - 非技术 - ITeye博客
最近一直在研究ES集群,也看了很多篇前辈们总结的博客,同事借鉴了官方给出的一些建议,做了一下几点总结,希望对后来者有用:. 为了防止ES进程的内存被置换到磁盘上(会导致在检索的时候发生内存交换导致检索速度迟缓)引起性能急速下降. 候可以把config/elasticsearch.yml中的bootstrap.mlockall设置为true就可以了.

es的连接查询

- - 行业应用 - ITeye博客
在一般的关系型数据库中,都支持连接操作. 在ES这种分布式方案中进行连接操作,代价是十分昂贵的. 不过ES也提供了相类似的操作,支持水平任意扩展,实现连接的效果. 其他内容, 参考Elasticsearch官方指南整理. 在ES中支持两种连接方式:嵌套查询 和 has_child、has_parent父子查询.

ES性能优化总结

- - 互联网 - ITeye博客
    Elasticsearch是目前大数据领域最热门的技术栈之一,经过近8年的发展,已从0.0.X版升级至6.X版本,虽然增加了很多的特性和功能,但是在主体架构上,还是没有太多的变化. 下面就把我对于ES使用实践的一些经验总结一下,供大家参考;也请大家拍砖. 如果有条件,尽可能使用SSD硬盘, 不错的CPU.

ElasticSearch —修改ES数据

- -
ElasticSearch能够以接近实时的速度提供数据操作和搜索功能. 在默认情况下,从索引/更新/删除数据到出现在搜索结果之间,你可能会感受到有1秒的延迟时间(刷新间隔). 这是与SQL等其他平台的一个重要区别,这些平台在完成事务之后,它们的数据立即可用. 先前,我们已经知道如何索引一个单个的文档.

es近实时搜索原理

- - 企业架构 - ITeye博客
 随着按段(per-segment)搜索的发展, 一个新的文档从索引到可被搜索的延迟显著降低了. 新文档在几分钟之内即可被检索,但这样还是不够快.  提交(Commiting)一个新的段到磁盘需要一个 . fsync 来确保段被物理性地写入磁盘,这样在断电的时候就不会丢失数据. 但是  fsync 操作代价很大; 如果每次索引一个文档都去执行一次的话会造成很大的性能问题.

请警惕 ES 的三大坑

- - InfoQ推荐
搜索引擎现在是用得越来越多了,比如 日志系统用到的 ELK 中的 E 就是 搜索引擎 Elasticsearch(简称 ES). 那对于搜索这种技术来说,最看重的是搜索的结果的准确性和搜索的响应时间. ES 的准确性可以通过 倒排索引算法来保证,那响应时间就需要磁盘或缓存来支持了,那么磁盘和缓存会带来哪些坑呢.

碾压ES和MongoDB,RedisJson横空出世!

- - DockOne.io
近期官网给出了 RedisJson(RedisSearch)的性能测试报告,可谓碾压其他 NoSQL. 下面是核心的报告内容,先上结论:. 对于隔离写入(isolated writes),RedisJSON 比 MongoDB 快 5.4 倍,比 ElasticSearch 快 200 倍以上. 对于隔离读取(isolated reads),RedisJSON 比 MongoDB 快 12.7 倍,比 ElasticSearch 快 500 倍以上.