我们已经建立了一个带有 json 类型字段的 postgres 数据库,它应该同步到 elastic 以获得更好的搜索性能。 json 对于对象数组非常复杂,因此我们需要使用嵌套数据类型定义 elasticsearch 映射。我们还定义了一个elasticsearch json 处理器,它转换potgres json 字段中的json 字符串(数据库迁移服务将其作为字符串处理)。
{
"description" : "parses content as json",
"processors" : [
{
"json" : {
"field" : "content",
"add_to_root": true
}
}
]
}
当使用从邮递员到 es 的转义 json 运行示例发布请求时,它可以工作(此示例发布请求(尝试)模仿应该从 DMS 发送的请求。如果通过 DMS 运行,我们会得到
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "cannot change object mapping from nested to non-nested"
}
],
"type": "illegal_argument_exception",
"reason": "cannot change object mapping from nested to non-nested"
},
"status": 400
是否有可能捕获从 DMS 发送到 ES 的实际请求
但只记录错误 - 查看 DMS 实际组装的请求会很有帮助。
附注: 在索引上没有预定义映射时,它是通过 DMS 插入的(ES 猜测字段类型很好),但我们需要应用映射。