elasticsearch 如何清理过期的数据

这篇具有很好参考价值的文章主要介绍了elasticsearch 如何清理过期的数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用elasticsearch收集日志进行处理,时间久了,很老的数据就没用了并且占用很大的磁盘,这个时候就要对过期数据进行清理

删除elasticsearch数据分为两种:一种是删除索引(数据和表结构同时删除,作用同sql server 中 drop table "表格名"),另一种是删除数据(不删除表结构,作用同 sql server中delete 语句)

1、删除索引

#查询索引
[root@ecloud-elk-05 opt]# curl -u zhanghao:mima -XGET 'http://10.56.0.103:9200/_cat/indices' 
green  open bizlog-2021.09.11                             pHsgvR7JQhmgMIBX24zhJg  1 1  25506896  2480707   44.3gb   22.1gb
green  open bizlog-2021.10.01                             noexo6r6Qe61qxmB30YzBQ  1 1  17382250  1859034   26.3gb   13.1gb
green  open bizlog-2021.09.12                             oYy6PpJERKatZnbhVJ6ZyA  1 1  19184655  1839037   33.1gb   16.5gb
green  open bizlog-2021.09.13                             w2LY5073QGy1I7r_9j1qag  1 1  29137518  2598039     49gb   24.5gb
green  open deliver-2021.11.21                            iNezTH7ISHmTt_dG3SdIvg 10 1     20071        0    7.9mb    3.9mb

#查询索引的列表
[root@ecloud-elk-05 opt]# curl -u zhanghao:mima -XGET 'http://10.56.0.103:9200/_cat/indices' |awk '{print $3}' | awk -F'-' '{print $1}' |sort |uniq -c
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 45633  100 45633    0     0  41564      0  0:00:01  0:00:01 --:--:-- 41597
     46 api_nginx_log
      2 .apm
      1 .async
    107 bizlog
     68 ctlog
     71 deliver
      1 .kibana_1
      1 .kibana_task_manager_1
      1 redis
      1 .reporting
      1 .security
     71 zmms_system

#清理索引
[root@ecloud-elk-05 0]# curl -XDELETE -u zhanghao:mima http://10.56.0.103:9200/ctlog-2021.09.02
{"acknowledged":true}[root@ecloud-elk-05 0]# 

清理索引的脚本一

[root@ecloud-elk-05 opt]# cat delete_es.sh 
#********************************************************************
#Author:		    yzl
#QQ: 			    calm_yzl@163.com
#Date: 			    2021-11-23
#FileName:		    es_index_clear.sh
#URL: 			    yzil.cn
#Description:		The test script
#Copyright (C): 	2021 All rights reserved
#********************************************************************

username=zhanghao
passwd=mima
ruikaecs='10.56.0.103'

datemask=$(date -d "-30 day" '+%Y-%m-%d')
index_list=(api_nginx_log bizlog ctlog deliver zmms_system)
for indexname in ${index_list[@]};do
  echo "`date '+%Y%m%d-%H%M%S'`clean index data:${indexname}-${datemask}"
  curl -XDELETE -u ${username}:${passwd} "http://$ruikaecs:9200/${indexname}-${datemask}"
  echo "done"
done

 清理索引的脚本二

#Author:		    yzl
#QQ: 			    calm_yzl@163.com
#Date: 			    2021-11-23
#FileName:		    es_index_clear.sh
#URL: 			    yzil.cn
#Description:		The test script
#Copyright (C): 	2021 All rights reserved
#********************************************************************

# 需要清理几天以前的索引日志
CLEAN_DAY=30

# 获取N天以前的年月日
YEAR=$(date -d "$(date -I) -$CLEAN_DAY"day"" +%Y)
MONTH=$(date -d "$(date -I) -$CLEAN_DAY"day"" +%m)
DAY=$(date -d "$(date -I) -$CLEAN_DAY"day"" +%d)

# 获取需要过滤N天前的ES索引数据
DATA=`curl -s http://zhanghao:mima@10.56.0.103:9200/_cat/indices?v \
|awk '/[0-9]{4}.[0-9]{2}.[0-9]{2}/{print $3}' |awk -F[-.] '{s2=mktime($(NF-2)" "$(NF-1)" "$NF" 0 0 0");\
s1=systime()}{if(s1-s2 >= 86400*"'$CLEAN_DAY'") print $0}'`

echo "即将清理"$YEAR'-'$MONTH'-'$DAY"前ES索引数据>>>>>>>>"
echo "清理数据为: "$DATA 

# 执行清理工作
for i in $DATA
    do
    sleep 1
    #curl -XDELETE -u zhanghao:mima http://10.56.0.103:9200/$i
done

echo "=======================" 
echo    "执行完成"
echo "======================="

2、使用官网 delete_by_query进行删除

curl -u 用户名:密码  -H'Content-Type:application/json' -d'{
    "query": {
        "range": {
            "@timestamp": {
                "lt": "now-7d",
                "format": "epoch_millis"
            }
        }
    }
}
' -XPOST "http://127.0.0.1:9200/*-*/_delete_by_query?pretty"

-u是格式为userName:password,使用Basic Auth进行登录。如果elasticsearch没有使用类似x-pack进行安全登录,则不需要加-u参数
-H是指定文档类型是json格式
-XPOST是指定用POST方式请求
-d是指定body内容

{
    "query": {
        "range": { //范围
            "@timestamp": {//时间字段
                "lt": "now-7d",//lt是小于(<),lte是小于等于(<=),gt是大于(>),gte是大于等于(>=),now-7d是当前时间减7天
                "format": "epoch_millis"
            }
        }
    }
}

定时删除

$ crontab -e

* 0 * * * /usr/bin/curl -u username:password  -H'Content-Type:application/json' -d'{"query":{"range":{"@timestamp":{"lt":"now-7d","format":"epoch_millis"}}}}' -XPOST "http://127.0.0.1:9200/*-*/_delete_by_query?pretty" > /tmp/elk_clean.txt

每天0点删除超过7天的无效索引

优点:

不依赖第三方插件或者代码

简单易理解

不需要指定索引名称可用*通配符删除

缺点:

效率低

常见命令

查看索引列表
curl -k https://your_username:your_password@10.124.10.27:9200/_cat/indices?v

查询集群是否健康
curl -k https://your_username:your_password@10.124.10.27:9200/_cluster/health

查看所有shard
curl -k https://your_username:your_password@10.124.10.27:9200/_cat/shards

启动命令
/usr/local/elasticsearch/bin/elasticsearch -d

文章来源地址https://www.toymoban.com/news/detail-504798.html

到了这里,关于elasticsearch 如何清理过期的数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis 中如何设置 Hash 数据类型的过期时间?

    在 Redis 中可以通过 setex 或 expire 方式来设置 key 的过期时间。但是对于 Hash 数据类型 Redis 是不支持的,所以我们需要使用“曲线救国”的方式去实现 Hash 数据类型的过期时间。 即,先对 Hash 数据类型赋值,然后再对 Hash 数据类型的 key 设置一个过期时间,这样就间接的实现了

    2024年02月12日
    浏览(36)
  • 如何使用ElasticSearch存储和查询数据

    1. 引言 在大多数的场景里,存储数据都是用MySQL这类关系型数据库,这类数据库的特点是数据存储安全性和一致性高,可以用于事务操作,但是随着数据量的增加,查询的速度也会随之降低,并且其扩展能力有限,因此在日志记录和查询等场景下,MySQL就显得力不从心,为了

    2024年02月14日
    浏览(53)
  • 如何使用 Elasticsearch 作为向量数据库

    在今天的文章中,我们将很快地通过 Docker 来快速地设置 Elasticsearch 及 Kibana,并设置 Elasticsearch 为向量搜索。 在上面,我们指定了 elasic 超级用户的密码为 password。这在下面将要使用到。 验证容器是否已启动并正在运行: 从上面我们可以看到 Elasticsarch 及 Kibana 已经完全运行

    2024年04月17日
    浏览(81)
  • 使用Elasticsearch处理大量数据,如何翻页查询

    当使用Elasticsearch处理大量数据时,从第一页直接跳转到第100页进行查询确实是一个挑战,因为需要计算跳过的记录数并有效地获取目标页的数据。以下是一些建议来实现这种跳页查询: 使用 from 和 size 参数 : Elasticsearch提供了 from 和 size 参数来实现分页。 from 参数指定了要

    2024年04月15日
    浏览(64)
  • 如何利用 ChatGPT 进行自动数据清理和预处理

    推荐:使用 NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 ChatGPT 已经成为一把可用于多种应用的瑞士军刀,并且有大量的空间将 ChatGPT 集成到数据科学工作流程中。 如果您曾经在真实数据集上训练过机器学习模型,您就会知道数据清理和预处理的步骤对于构建可靠的

    2024年02月12日
    浏览(49)
  • Mac系统数据如何清理?查找所有大文件的方法分享

    月初的时候发现Mac存储空间系统数据占了200多个G,找了好多方法都不管用,找了苹果技术支持,前后两个高级工程师帮我找这个200个G用在哪了,最后结果就是只能重装系统,但是装了好多开发环境不想重装,最近用了好多Linux命令,闲着没事打开终端找了找,最后还真找到了

    2024年02月07日
    浏览(48)
  • 【实战】使用Lua脚本怎么清理redis中的数据【实战】使用Lua脚本怎么清理redis中的数据

    首先我们通过hiredis 向redis 中写入了数据,这里我们主要以测试为目的,所以,Key 值设定为毫秒级时间戳。 但是当我们测试完成之后,需要验证实际情况,这里我们直接使用redis-cli 登录数据库看看。 本次测试完成,接下来要结合业务开始测试,需要清理数据库,但是一条一

    2024年02月13日
    浏览(91)
  • ElasticSearch如何使用以及java代码如何查询并排序ES中的数据(距离排序)

    import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.geo.GeoDistance; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.common.unit.DistanceUnit; import org.elasticsearch.common.unit.

    2024年04月12日
    浏览(51)
  • Logstash:如何使用 Logstash 解析并摄入 JSON 数据到 Elasticsearch

    在我之前的文章 “Logstash:Data 转换,分析,提取,丰富及核心操作” 有涉及到这个话题。今天我想使用一个具体的例子来更深入地展示。   我们先来把如下的数据拷贝下来,并保存到一个叫做 sample.json 的文件中。我们可以把这个文件置于 Logstash 的安装根目录下。 sample.j

    2024年02月02日
    浏览(45)
  • Elasticsearch集群许可证过期问题处理

    当你执行索引相关操作有如下报错: 这就提示你许可证过期需要重新申请。 步骤如下: 1. 登录注册 Register | Elastic https://license.elastic.co/registration  注册成功!邮件会收到下载链接。   2. 点击下载与ES对应的版本 查看ES版本:curl http://172.16.18.140:9200 3. 将下载好的许可证文件上

    2024年02月02日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包