将旧数据从postgres导入elasticsearch
问题描述:
我的postgres数据库(远程)中有很多数据。这是过去1年的数据,现在我想把它推向elasticsearch。将旧数据从postgres导入elasticsearch
数据中有一个时间字段,其格式为2016-09-07 19:26:36.817039+00
。
我希望这是elasticsearch的时间域(@timestamp
)。这样我可以用kibana查看它,并在去年查看一些可视化。
我需要帮助我如何有效地推送所有这些数据。我不明白,我如何从postgres获取所有这些数据。
我知道我们可以通过jdbc插件注入数据,但我认为我无法创建我的@timestamp
字段。
我也知道zombodb,但不知道这是否也给我功能给我自己的时间。
此外,数据是散装的,所以我在寻找一个有效的解决方案
我需要我怎么能做到这一点的帮助。所以,建议是受欢迎的。
答
我知道我们可以通过JDBC插件注入数据,但我想我不能创建 我
@timestamp
领域这一点。
这应该可以用Logstash来实现。第一个起点应该是this blog post。请记住,Logstash总是由3部分组成:
- 输入:JDBC input。如果您只需要导入一次,请跳过
schedule
,否则请在cron语法中设置正确的时间。 - 过滤器:这不是博客文章的一部分。您需要使用Date filter来设置正确的值
@timestamp
- 最后添加示例。 - 输出:这只是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)
}
如果您担心的表现:
- 您需要设置正确的
jdbc_fetch_size
。 - Elasticsearch输出是batched by default。