canal异常:cannot write xcontent for unknown value of type class java.sql.Timestamp
现象同步数据出现异常Caused by: java.lang.IllegalArgumentException: cannot write xcontent for unknown value of type class java.sql.Timestampat org.elasticsearch.common.xcontent.XContentBuilder.unknownValue(XCont
·
现象
同步数据出现异常
Caused by: java.lang.IllegalArgumentException: cannot write xcontent for unknown value of type class java.sql.Timestamp
at org.elasticsearch.common.xcontent.XContentBuilder.unknownValue(XContentBuilder.java:833) ~[na:na]
at org.elasticsearch.common.xcontent.XContentBuilder.map(XContentBuilder.java:888) ~[na:na]
at org.elasticsearch.common.xcontent.XContentBuilder.map(XContentBuilder.java:870) ~[na:na]
at org.elasticsearch.action.index.IndexRequest.source(IndexRequest.java:376) ~[na:na]
at org.elasticsearch.action.index.IndexRequest.source(IndexRequest.java:365) ~[na:na]
at org.elasticsearch.action.update.UpdateRequest.doc(UpdateRequest.java:643) ~[na:na]
at com.alibaba.otter.canal.client.adapter.es7x.support.ESConnection$ES7xUpdateRequest.setDoc(ESConnection.java:222) ~[na:na]
原因分析及解决方案
情况一
es中字段类型为text,而mysql类型为date类型, es客户端不支持对java.sql.Timestamp类型转换为字符串。
- 方案1:修改配置中的sql,调整Timestamp类型的输出格式。
sql: "select id,date_format(createtime,'%Y-%m-%d %H:%I:%S') createtime from test_user"
- 方案2:修改es中字段类型为date
情况二
adapter向es中创建字段时,mysql为timestamp类型,则无法创建该字段。
- 方案1
手动在es中创建该字段
- 方案2
sql中timestemp字段转为字符串类型
更多推荐
已为社区贡献22条内容
所有评论(0)