【问题标题】:How can I delete my entire Elasticsearch db and resend all the logs?如何删除我的整个 Elasticsearch 数据库并重新发送所有日志?
【发布时间】:2017-02-09 23:17:53
【问题描述】:

我已经安装了 ELK + filebeat,并且我最近开始使用 SYSLOG5424LINE logstash 过滤器过滤我的系统日志,因为系统日志优先级默认为通知。除了更正错误默认为“通知”的系统日志优先级字段之外,这在我的弹性搜索系统日志文档中创建了一些新索引。

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

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

【问题讨论】:

    标签: elasticsearch elastic-stack reindex


    【解决方案1】:

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

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

    如果您只想从索引中删除特定的文档类型,您需要使用 Delete by query 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 重新发送的数据将使用它的当前迭代。

    【讨论】:

    • 对于任何想知道确切语法的人: curl -XDELETE localhost:9200/* cd /var/lib/filebeat vi registry :1,$d :wq sudo service filebeat restart
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多