DataX elasticsearchwriter 下的 ESWriter.java 代码问题

lpwwtiir  于 2022-10-20  发布在  ElasticSearch
关注(0)|答案(4)|浏览(223)

ESWriter.java 第300行
getDateStr 方法 的 if (column.getType() != Column.Type.DATE && esColumn.getFormat() != null)

应该要改成 if (column.getType() == Column.Type.DATE && esColumn.getFormat() != null)

不然此处非date的type进行format有何意义,并且如果有的date带了format参数,也没用进行format了

private String getDateStr(ESColumn esColumn, Column column) { DateTime date = null; DateTimeZone dtz = DateTimeZone.getDefault(); if (esColumn.getTimezone() != null) { // 所有时区参考 http://www.joda.org/joda-time/timezones.html dtz = DateTimeZone.forID(esColumn.getTimezone()); } if (column.getType() != Column.Type.DATE && esColumn.getFormat() != null) { DateTimeFormatter formatter = DateTimeFormat.forPattern(esColumn.getFormat()); date = formatter.withZone(dtz).parseDateTime(column.asString()); return date.toString(); } else if (column.getType() == Column.Type.DATE) { date = new DateTime(column.asLong(), dtz); return date.toString(); } else { return column.asString(); } }

rxztt3cl

rxztt3cl1#

在测试的时候发现了这个问题
而且还有另外的一个问题是:当date为null的时候,默认给他当前时间,理论上应该返回null

w8ntj3qf

w8ntj3qf2#

这里getDateStr 方法 的 if (column.getType() != Column.Type.DATE && esColumn.getFormat() != null)是对column中string类型转换为es中date类型

xxb16uws

xxb16uws3#

在测试的时候发现了这个问题
而且还有另外的一个问题是:当date为null的时候,默认给他当前时间,理论上应该返回null

不仅仅是date类型,还有其他类型有些字段也是null的,也应该是返回null,但是同步到es中是不显示状态请问怎么解决呢?

a11xaf1n

a11xaf1n4#

在测试的时候发现了这个问题
而且还有另外的一个问题是:当date为null的时候,默认给他当前时间,理论上应该返回null

不仅仅是date类型,还有其他类型有些字段也是null的,也应该是返回null,但是同步到es中是不显示状态请问怎么解决呢?

空的属性不序列化成json就可以解决

相关问题