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(); } }
4条答案
按热度按时间rxztt3cl1#
在测试的时候发现了这个问题
而且还有另外的一个问题是:当date为null的时候,默认给他当前时间,理论上应该返回null
w8ntj3qf2#
这里getDateStr 方法 的 if (column.getType() != Column.Type.DATE && esColumn.getFormat() != null)是对column中string类型转换为es中date类型
xxb16uws3#
在测试的时候发现了这个问题
而且还有另外的一个问题是:当date为null的时候,默认给他当前时间,理论上应该返回null
不仅仅是date类型,还有其他类型有些字段也是null的,也应该是返回null,但是同步到es中是不显示状态请问怎么解决呢?
a11xaf1n4#
在测试的时候发现了这个问题
而且还有另外的一个问题是:当date为null的时候,默认给他当前时间,理论上应该返回null
不仅仅是date类型,还有其他类型有些字段也是null的,也应该是返回null,但是同步到es中是不显示状态请问怎么解决呢?
空的属性不序列化成json就可以解决