2017-07-30 123 views
0

我的postgres数据库(远程)中有很多数据。这是过去1年的数据,现在我想把它推向elasticsearch。将旧数据从postgres导入elasticsearch

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

我希望这是elasticsearch的时间域(@timestamp)。这样我可以用kibana查看它,并在去年查看一些可视化。

我需要帮助我如何有效地推送所有这些数据。我不明白,我如何从postgres获取所有这些数据。

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

我也知道zombodb,但不知道这是否也给我功能给我自己的时间。

此外,数据是散装的,所以我在寻找一个有效的解决方案

我需要我怎么能做到这一点的帮助。所以,建议是受欢迎的。

回答

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) 
} 

如果您担心的表现: