ElasticSearch 定时批量删除N天前的数据

摘要:
步骤1。在Kibana控制台上完成删除N天数据的命令。学习Kibana命令添加或删除官方学习地址:https://www.elastic.co/guide/cn/kibana/current/console-kibana.htmligure1.控制台用户界面控制台可以解析cURL命令等语句。例如,以下控制台命令GET/_Search{“query”:{“match_all”:{}}}是Elasticsearch_来自搜索API的简单GET请求。图2:API提示在左侧面板中键入命令后,可以单击URL行旁边的绿色三角形将请求提交给Elasticsearch。
描述:

之前我已经完成了使用ElasticSearch、kibana、filebeat、三个工具完成分布式集群收集 分布在各个ip地址上的微服务日志,这样就可以统一的在一个服务器上查看了所有的微服务产生的日志了,避免了一个个通过工具远程linux服务器去查看日志,极大提高了日志查看分析的效率了。当时目前我只是完成收集和查看所有日志,那么时间一长我们就会遇到问题,日志一直发到elastic服务器上,日志越来越多,我就需要一个定时删除过期的日志数据的办法。

功能需求:

需要定时删除elasticSearch指定过期数据,比如只保留N天数据,超过N天前的数据,直接删除。

解决方案:

通过万能的百度搜索,找到了解决方案,这里我们就比如,定时删除30天前收集的日志文件。

步骤1、在kibana控制台完成删除N天数据的命令。

学习kibana 命令 查增删该

官方学习地址:https://www.elastic.co/guide/cn/kibana/current/console-kibana.html

igure 1. 控制台用户界面

控制台可以解析像 cURL 命令这样的语句。例如以下控制台命令

GET /_search
{
  "query": {
    "match_all": {}
  }
}

是 Elasticsearch _search API 的简单 GET 请求。下面是同样效果的 cURL 命令。

curl -XGET "http://localhost:9200/_search" -d'
{
  "query": {
    "match_all": {}
  }
}'

实际上,您可以复制粘贴上面的命令到控制台,它会自动转换成控制台语句。

当敲入一行命令,控制台会给出上下文相关的提示。这些提示可以帮助您探索每条 API 参数,或者用于提高输入速度。控制台会提示 APIs 、索引和字段名。Suggestions

Figure 2. API 提示

一旦您在左边的面板中敲入命令,您可以点击 URL 行边上的绿色小三角提交这条请求到 Elasticsearch。注意,当您移动光标的时候,会跟随着您。我们把这个叫做动作菜单。您也可以选择写多条请求并一起提交它们。

Figure 3. 动作菜单

当请求响应后,您可以在侧面的面板中看到它:

Figure 4. 输出面板

控制台用户界面

在这个章节中会有更多关于控制台界面的详细描述。控制台章节只介绍了基础的用户界面部分

我们当然主要学习删除命令 

下面是demo代码

POST /filebeat-*/_delete_by_query
{
  "query": {
    "range": {
      "@timestamp": {
        "lt": "now-300d",
        "format": "epoch_millis"
      }
    }
  }
}

其中 "lt": "now-300d", 参数表示 删除 300天前的数据,如需指定N天前,我们只要修改 指定天数即可

下面是执行结果

ElasticSearch 定时批量删除N天前的数据第2张

步骤2、将改命令转换成脚本

步骤如图:

ElasticSearch 定时批量删除N天前的数据第3张

代码:

curl -XPOST "http://127.0.0.1:9200/filebeat-*/_delete_by_query" -H 'Content-Type: application/json' -d'{
"query": {
"range": {
"@timestamp": {
"lt": "now-300d",
"format": "epoch_millis"
}
}
}
}'

将上面的代码复制后:

windows下脚本

windows下制作成 dos 批处理文件:新建txt,修改文件后缀名为.bat 后将上面代码拷入后保存

注意 windows 下执行 curl命令 需要安装 环境:https://curl.haxx.se/windows/

linux下 编写脚本

linux下新建 .sh 脚本文件 

#!/bin/bash
curl -XPOST "http://127.0.0.1:9200/filebeat-*/_delete_by_query" -H 'Content-Type: application/json' -d'{
"query": {
"range": {
"@timestamp": {
"lt": "now-300d",
"format": "epoch_millis"
}
}
}
}'

步骤3、将脚本做成定时任务

到此就完成了定时批量删除过期的 elastic 日志文件的功能。

总结 : 其实 elasticserch 可以比如类似 mysql 数据库,kibana 类似 可视化 操作数据库的第三方软件 如 Navicat、PL/SQL工具。

免责声明:文章转载自《ElasticSearch 定时批量删除N天前的数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Django模型Model之数据控制详解解决 各浏览器不支持display:flex的最简单办法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pyspark 针对Elasticsearch的读写操作

1.创建spark与Elasticsearch的连接 为了对Elasticsearch进行读写操作,需要添加Elasticsearch的依赖包,其中,添加依赖包(org.elasticsearch_elasticsearch-spark-20_2.11-6.8.7.jar)有下面的三种方式: 1)将依赖包直接放在安装spark目录下面的jars目录下,即可...

Elasticsearch: Ngrams, edge ngrams, and shingles

Ngrams和edge ngrams是在Elasticsearch中标记文本的两种更独特的方式。 Ngrams是一种将一个标记分成一个单词的每个部分的多个子字符的方法。 ngram和edge ngram过滤器都允许您指定min_gram以及max_gram设置。 这些设置控制单词被分割成的标记的大小。 这可能令人困惑,让我们看一个例子。 假设你想用ngra...

dotnet 教你写一个可以搞炸本机所有 WCF 应用的程序方法

作为团队里面挖掘机出身的我,怎么能不多挖一些坑好将小伙伴们都埋进去呢。本文来告诉大家一个有趣且简单的方法,此方法可以将本机的 WCF 玩坏,不敢说真的搞炸本机所有 WCF 应用,但搞炸大部分基于 WCF 的软件还是没有问题的。阅读本文,你可以不仅可以了解到有这样的逗比方法,更重要的是在你的 WCF 模块炸掉的时候,你知道要甩锅给谁 本文如此逗比的方法是由...

ELK 二进制安装并收集nginx日志

对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为ELKStack,所以说ELKStack指的是Elasticsearch(java)、Logstash(jruby)、Kibana技术栈的结合, EL...

ELK 架构之 Logstash 和 Filebeat 安装配置

上一篇:ELK 架构之 Elasticsearch 和 Kibana 安装配置 阅读目录: 1. 环境准备 2. 安装 Logstash 3. 配置 Logstash 4. Logstash 采集的日志数据,在 Kibana 中显示 5. 安装配置 Filebeat 6. Filebeat 采集的日志数据,在 Kibana 中显示 7. Filebeat...

使用Elasticsearch的processors来对csv格式数据进行解析

来源数据是一个csv文件,具体内容如下图所示: 导入数据到es中 有两种办法,第一种是在kibana界面直接上传文件导入 第二种方法是使用filebeat读取文件导入 这里采用第二种办法 配置文件名:filebeat_covid19.yml filebeat.inputs: - type: log paths: - /covid19/covid...