如何删除我的整个 Elasticsearch 数据库并重新发送所有日志?
How can I delete my entire Elasticsearch db and resend all the logs?
我已经安装了 ELK + filebeat,并且我最近开始使用 SYSLOG5424LINE logstash 过滤器以不同方式过滤我的系统日志,因为系统日志优先级默认为注意。除了更正错误默认为 'notice' 的系统日志优先级字段外,这还在我的弹性搜索系统日志文档中创建了一些新索引。
现在我所有新生成的 syslog 文档都有一堆新字段,而我的旧文档在过滤器更改之前没有,而且我认为重新索引我的旧文档不会起作用,因为我需要删除具有不正确值的系统日志优先级字段并将其替换为 syslog5424_pri 字段。
所以,我已经阅读了如何从 elasticsearch 中删除所有文档,但是一旦我这样做了,我如何让 filebeat 将所有这些日志重新发送到 ES?它是否具有与 ES 现在接收的新日志相同的索引和映射?
您使用 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 重新发送的数据将使用它的当前迭代。
我已经安装了 ELK + filebeat,并且我最近开始使用 SYSLOG5424LINE logstash 过滤器以不同方式过滤我的系统日志,因为系统日志优先级默认为注意。除了更正错误默认为 'notice' 的系统日志优先级字段外,这还在我的弹性搜索系统日志文档中创建了一些新索引。
现在我所有新生成的 syslog 文档都有一堆新字段,而我的旧文档在过滤器更改之前没有,而且我认为重新索引我的旧文档不会起作用,因为我需要删除具有不正确值的系统日志优先级字段并将其替换为 syslog5424_pri 字段。
所以,我已经阅读了如何从 elasticsearch 中删除所有文档,但是一旦我这样做了,我如何让 filebeat 将所有这些日志重新发送到 ES?它是否具有与 ES 现在接收的新日志相同的索引和映射?
您使用 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 重新发送的数据将使用它的当前迭代。