【问题标题】:Delete documents older than 30 days in elasticsearch [closed]在elasticsearch中删除超过30天的文档[关闭]
【发布时间】:2016-07-17 05:33:26
【问题描述】:

我想删除我的 elasticsearch 索引中超过 30 天的文档。

有什么想法吗?

编辑:

我希望这种情况自动发生 - 我的索引中的任何文档都不应超过 30 天。 因此,在我看来,有两种选择:使用 curator 或 DELETE 请求。

我都试过了,但都失败了。 当我使用 DELETE http 语句时,我必须以某种方式创建一个过滤器来过滤所有超过 30 天的文档并删除它们。

我尝试使用 curator,但 curator(据我所知)仅删除整个索引。当尝试使用 curator 删除超过 30 天的索引时,我的时间戳导致错误。我的 moment.js 模式看起来像 this"MMMM Do YYYY, HH:mm:ss.SSS"

编辑 2: 我在我的 logstash 配置中添加了以下内容:

elasticsearch
    {
    hosts => ["http://localhost:9200"]
    index => "logstash-%{type}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
    }

因此,logstash 为每种类型和每天创建一个特定的索引。 现在我可以使用 curator 删除早于特定日期的索引。

问题解决了,恕我直言。

【问题讨论】:

  • 是的。一些。你试过什么?
  • 是一次性操作吗?是否要设置有效期?
  • elastic.co/guide/en/elasticsearch/reference/current/… POST twitter/_delete_by_query { "query": { { "range": { "@timestamp": { "gte": 1548975600000, "format": "epoch_millis" } } } } } 并计算脚本中的纪元。

标签: json windows elasticsearch logstash kibana


【解决方案1】:

您可以使用DELETE 查询: https://www.elastic.co/guide/en/elasticsearch/reference/1.6/docs-delete-by-query.html 例如,查询将删除所有早于:2016-02-29

DELETE index_name/_query
{
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "query": "*"
        }
      },
      "filter": {
        "range": {
          "@timestamp": {
            "lte": "2016-02-29"
          }
        }
      }
    }
  }
}

更新 >6.4

根据官方文档,这个函数已经被_delete_by_query取代了

POST index_name/_delete_by_query
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
相关资源
最近更新 更多