我试图通过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" } }
答案 0 :(得分:1)
您可以尝试仅指定您想要的字段:
filter {
json {
source => "value"
}
}
过滤器应该与每条记录一起执行,因此您不应该添加search_document