Logstash JSON过滤器似乎不适用于JDBC输入

时间:2017-07-16 16:55:21

标签: elasticsearch logstash

我试图通过Elasticsearch将文档从postgres视图索引到logstash。我的配置文件的语句部分如下所示:

select search_document FROM my_view;

我的配置文件中的下一行是我尝试从数据库调用中提取值的地方:

filter {
 json {
   source => "[search_document][value]"
  }
}

这应该选择列的值,然后直接将其传递给Elasticsearch(或者在此测试阶段,stdout);但是,它没有正常工作。我在上面的属性访问中尝试了几种变体,它总是插入带有" search_document"作为密钥和JSON文档的其余部分,因为它的价值。

我做错了吗?

修改:我已根据我发现的其他答案更新了我的观点以执行select search_document::text FROM my_view;。列的原始类型是JSONB,行中的数据类似于:

{ "value" : { "key_1": "hello", "key_2": "world" } }

1 个答案:

答案 0 :(得分:1)

您可以尝试仅指定您想要的字段:

filter {
 json {
   source => "value"
  }
}

过滤器应该与每条记录一起执行,因此您不应该添加search_document