You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于expired_time字段创建OpenSearch日志删除策略的方法(1.0.1版本)

基于OpenSearch 1.0.1的字段级日志删除方案

OpenSearch 1.0.1原生索引生命周期管理(ILM)仅支持按索引级条件(如创建时间、大小)执行删除操作,要实现基于expired_time字段的日志清理,可采用以下几种可行方案:

方案一:定期调用_delete_by_query API清理

直接通过_delete_by_query接口匹配expired_time字段条件,删除过期文档,适合单索引场景。

操作示例:

删除my-log索引中expired_time早于当前时间7天的文档:

curl -X POST "http://<opsearch-host>:<port>/my-log/_delete_by_query?conflicts=proceed" -H 'Content-Type: application/json' -d'
{
  "query": {
    "range": {
      "expired_time": {
        "lt": "now-7d/d"
      }
    }
  }
}'

通过crontab(Linux)或系统任务计划(Windows)设置定时任务,比如每天凌晨低峰时段执行该请求。若数据量较大,可添加分页逻辑分批次删除,避免占用过多集群资源。

方案二:时间分片索引+ILM结合

调整索引创建策略,按时间分片存储日志(如按天创建my-log-2024-02-01、my-log-2024-02-02):

  • 写入时根据expired_time或日志产生时间,将数据路由到对应时间分片索引;
  • 配置ILM策略,根据索引的时间标识自动删除整个过期索引。

该方案效率远高于单索引下的文档级删除,因为删除整个索引的资源开销更小。

方案三:使用Curator工具管理

借助官方维护的Curator工具,配置自定义清理规则:

  • 编写Curator动作配置,通过delete_by_query动作匹配expired_time字段条件清理文档;
  • 定时运行Curator脚本执行清理任务。

注意需确保Curator版本与OpenSearch 1.0.1兼容,避免兼容性问题。

方案四:写入端前置过滤

在日志采集阶段(如Filebeat、Logstash)直接过滤过期数据,从源头减少存储量:
以Logstash为例,添加filter规则丢弃已过期的日志:

filter {
  if [expired_time] < "%{+YYYY-MM-dd'T'HH:mm:ss.SSSZ}" {
    drop { }
  }
}

内容的提问来源于stack exchange,提问作者Bui Hai Duong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:03:15