【发布时间】:2016-01-19 17:11:35
【问题描述】:
我正在尝试使用json_agg将一些带有嵌套对象的数据从postgres导入elasticsearch,但是ES不会像嵌套对象那样保存数据,而是像这样保存
"some_objects": {"type": "json", "value": "[{\"a\":\"1\"}]"}
改为:
"some_objects": [{"a":"1"}]
每当我在查询中使用 json 类型时都会发生这种情况(我通过“logstash”导入数据)。 如果我需要导入连接对象,我使用 hstore 并且它可以工作,但我不能将 hstore 用于多个对象,不幸的是我不能用数组代替 json。
我用于导入数据的 SQL 如下所示
SELECT a.*,
(SELECT json_agg(hstore(so)) AS some_objects FROM
(SELECT * FROM c WHERE a.id=c.a_id) AS so),
(SELECT hstore(ao) AS another_object FROM (SELECT b.*) AS ao),
FROM a_table AS a
LEFT OUTER JOIN b ON a.id=b.a_id
在我设置的 elasticsearch 映射数据中:
...
"some_objects": {
"type": "nested"
},
"b": {
"type": "object"
}
它成功地适用于“b”,但不适用于“some_objects”。显然它取决于 postgres 中的 json 类型。 有什么办法可以解决吗?
非常感谢。
【问题讨论】:
-
看起来像stackoverflow.com/questions/21081196/…,但我不使用河流
标签: json postgresql elasticsearch logstash