ElasticSearch系列---【批量删除(或修改)索引别名】
1.问题背景
es集群突然查询很慢,定位到是查询近360天指标索引时,查询量太大导致的,每天三四百万流水,频繁查询把数据变成了热点数据,加载到内存中,导致内存不断增大,最终被撑爆,报data too large的错误。
2.临时解决方案
因为是指标,所以允许为空,后续再重新计算,补上,所以,在生产环境,我们选择了保证集群可用。因为我们是根据别名查询的,有360个索引,因此,我们选择了删掉别名,然后创建一个别名为指标索引的空索引,修改或删除完别名之后,建议通过kibana关闭索引,不要直接关闭索引,要先删除别名,不然直接关闭索引查询会报错。关闭索引可以大大减少资源消耗,特别是对不常访问或只需要保留其历史记录的索引来说。
操作命令:
#通配符批量删除索引别名(适用于索引多)
DELETE /afp_idx_2024*/_alias/afp_idx
#批量删除索引别名(适用于索引有限)
POST /_aliases
{
"actions": [
{
"remove": {
"index": "afp_idx_20230908",
"alias": "afp_idx"
}
},
{
"remove": {
"index": "afp_idx_20230909",
"alias": "afp_idx"
}
},
{
"remove": {
"index": "afp_idx_20230910",
"alias": "afp_idx"
}
}
}
#批量新增索引别名(适用于索引有限)
POST /_aliases
{
"actions": [
{
"add": {
"index": "afp_idx_20240906",
"alias": "afp_idx_back"
}
},
{
"add": {
"index": "afp_idx_20240906",
"alias": "afp_idx_back"
}
},
{
"add": {
"index": "afp_idx_20240906",
"alias": "afp_idx_back"
}
}
}
#删除新增(可以理解为修改)
POST /_aliases
{
"actions": [
{
"remove": {
"index": "afp_idx_20240906",
"alias": "afp_idx"
}
},
{
"add": {
"index": "afp_idx_20240906",
"alias": "afp_idx_back"
}
}
}
#上面的命令也可以用curl命令执行
curl -X POST "http://localhost:9200/_aliases" -H 'Content-Type: application/json' -d'
{
"actions": [
{
"remove": {
"index": "afp_idx_20240906",
"alias": "afp_idx"
}
},
{
"add": {
"index": "afp_idx_20240906",
"alias": "afp_idx_back"
}
},
{
"remove": {
"index": "afp_idx_20240905",
"alias": "afp_idx"
}
},
{
"add": {
"index": "afp_idx_20240905",
"alias": "afp_idx_back"
}
}
}'
愿你走出半生,归来仍是少年!