如何删除整个Elasticsearch数据库并重新发送所有日志?

时间:2017-02-09 04:41:41

标签: elasticsearch elastic-stack reindex

我安装了ELK + filebeat并且我最近开始使用SYSLOG5424LINE logstash过滤器以不同方式过滤我的syslogs,因为系统日志优先级默认为通知。这在弹性搜索的syslog文档中创建了一些新索引,此外还纠正了错误地默认为' notice'的syslog优先级字段。

现在我所有新生成的系统日志文件都有一堆新字段,我的旧文档来自过滤器更改之前没有,我不认为重新索引我的旧文档会起作用,因为我会需要删除具有不正确值的syslog优先级字段,并将其替换为syslog5424_pri字段。

所以,我已经阅读了如何从elasticsearch中删除所有文档,但是一旦我这样做,我如何让filebeat将所有这些日志重新发送到ES?它是否具有与ES现在正在接收的新日志相同的索引和映射?

1 个答案:

答案 0 :(得分:3)

使用DELETE API删除索引和文档。如果你想摆脱整个索引,你可以使用

curl -XDELETE 'localhost:9200/<indexname>'

如果您只想从索引中删除特定文档类型,则需要使用“按查询API删除”

curl -XPOST 'localhost:9200/<indexname>/_delete_by_query?pretty' -H 'Content-Type: application/json' -d'
{
  "query": { 
    "match": {
      "type": "doctype"
    }
  }
}
'

重新发送日志Filebeat已经通过清除Filebeat注册表完成发送。该文件夹应为$FilebeatInstallation/registry。这样FileBeat会将其视为新日志。

映射和索引名称由logstash配置定义。因此,现在由Filebeat重新发送的数据将使用它的当前迭代。