2017-07-16 69 views
1

我试图从一个Postgres的观点并经由Elasticsearch logstash索引文件中工作。我的配置文件的声明部分看起来是这样的:Logstash JSON过滤器不会出现与JDBC输入

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" } } 
+0

? –

+0

当然,请参阅上文。 – sean

回答

1

您可以尝试仅指定你想获得这样的领域:

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

过滤器假定每记录您可以粘贴您选择行的格式来执行,所以你不应该添加search_document

+0

是否有可能需要使用'json_encode'将其从文本格式化为JSON? – sean