如何将多维 SQL json 字符串转换为有效的 JSON 对象,以便它可以映射到 Elasticsearch 索引模板字段类型。
示例案例:
假设这是我的 Elasticsearch 索引模板。
{
"settings": {
"number_of_shards": "5"
},
"mappings": {
"_doc": {
"properties": {
"manager": {
"properties": {
"age": {
"type": "integer"
},
"name": {
"type": "text"
}
}
},
"employees": {
"type": "nested",
"properties": {
"age": {
"type": "integer"
},
"name": {
"type": "text"
},
"addresses": {
"type": "nested",
"properties": {
"street": {
"type": "text"
},
"city": {
"type": "text"
}
}
}
}
}
}
}
}
}
有问题的案例是“员工”数组,它是内部“地址”数组 JSON 转换。
“员工”的示例 SQL 数据:
[{"age":30,"name":"User 1","addresses":"[{\"street\":"Home street 1",\"city\":"New York"},{\"street\":"Home street 2",\"city\":"Washington"}]"}]
Logstash 过滤器配置:如果“员工”不包含嵌套数组,则转换有效。但是当我数组有嵌套数组时问题就来了。
filter {
ruby {
code => "
require 'json'
employees_json_value = JSON.parse(event.get('employees').to_s)
event.set('employees',employees_json_value )
"
}
}
问题是如何将“员工”列嵌套的“地址”数组转换为 JSON 对象,以便我可以将其映射到 Elasticsearch 索引模板。