【问题标题】:import old data from postgres to elasticsearch将旧数据从 postgres 导入到 elasticsearch
【发布时间】:2018-01-06 07:41:06
【问题描述】:

我的 postgres 数据库中有很多数据(在远程)。这是过去1年的数据,现在想推到elasticsearch上。

数据中有一个时间字段,格式为2016-09-07 19:26:36.817039+00

我希望这是弹性搜索中的时间域(@timestamp)。这样我就可以在 kibana 中查看它,并查看过去一年的一些可视化。

我需要有关如何有效推送所有这些数据的帮助。我无法理解如何从 postgres 获取所有这些数据。

我知道我们可以通过 jdbc 插件注入数据,但我认为我无法使用它创建我的 @timestamp 字段。

我也知道 zombodb,但不确定这是否也让我能够提供自己的时间域。

另外,数据是批量的,所以我正在寻找一个有效的解决方案

我需要有关如何执行此操作的帮助。所以,欢迎提出建议。

【问题讨论】:

    标签: database postgresql elasticsearch import export


    【解决方案1】:

    我知道我们可以通过 jdbc 插件注入数据,但我认为我无法创建 我的@timestamp 字段。

    这应该可以通过 Logstash 实现。第一个起点应该是this blog post。请记住,Logstash 始终由 3 个部分组成:

    1. 输入:JDBC input。如果只需要导入一次,请跳过schedule,否则请在 cron 语法中设置正确的时间。
    2. 过滤器:这不是博客文章的一部分。您将需要使用 Date filter 设置正确的 @timestamp 值 - 在末尾添加一个示例。
    3. 输出:这就是Elasticsearch output

    这将取决于 PostgreSQL 中时间戳值的格式和字段名称,但过滤器部分应如下所示:

    date {
       match => ["your_date_field", "dd-mm-YYYY HH:mm:ss"]
       remove_field => "your_date_field" # Remove now redundant field, since we're storing it in @timestamp (the default target of date)
    }
    

    如果您关心性能:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 2020-09-27
      • 2019-01-22
      • 1970-01-01
      • 2012-04-28
      相关资源
      最近更新 更多