gpt4 book ai didi

JSON 字段从 postgres 导入到 elasticsearch

转载 作者:行者123 更新时间:2023-11-29 12:19:22 27 4
gpt4 key购买 nike

我正在尝试使用 json_agg 将一些带有嵌套对象的数据从 postgres 导入到 elasticsearch,但是 ES 不像嵌套对象那样保存数据,而是像这样保存

"some_objects": {"type": "json", "value": "[{\"a\":\"1\"}]"}

改为:

"some_objects": [{"a":"1"}]

当我在查询中使用 json 类型时(我通过“logstash”导入数据),每次都会发生这种情况。如果我需要导入连接对象,我使用 hstore 并且它可以工作,但我不能将 hstore 用于多个对象,不幸的是我不能用 array 代替 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 类型。有什么办法可以解决吗?

非常感谢。

最佳答案

通过ruby filter解决了。

filter {
ruby {
code => "
require 'json'
some_json_field_value = JSON.parse(event['some_json_field'].to_s)
event['some_json_field'] = some_json_field_value
"
}
}

关于JSON 字段从 postgres 导入到 elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34882915/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com