@Data
@IndexName("demo")
public class EasyEsDemo {
@IndexId
private String id;
private String name;
private int age;
// 这个Map字段因为NameFilter过滤器,导致fastjson序列化后为{null:"value"}这种形式,insert报错
private Map<String, Object> data;
}
上面Map类型字段保存报错如下:
Caused by: ElasticsearchException[Elasticsearch exception [type=json_parse_exception, reason=Unexpected character ('n' (code 110)): was expecting double-quote to start field name
.....
此错误主要原因是:EntityInfoHelper中创建的NameFilter是一个匿名类,看上去主要功能就是过滤排除字段,但是针对Map类型字段就出现了问题,导致序列化时候Map的key字段变成了个null. 导致fastjson序列化后为{null:"value"}这种形式,insert报错。
EntityInfoHelper中NameFilter过滤器代码如下:这个过滤器导致序列化Map类型字段时,获取的key当成类的字段属性处理,而类中没有名字为key的字段,所以过滤器过滤完后key变成了null
/**
* 添加fastjson字段过滤器
*
* @param entityInfo 实体信息
*/
private static void addNameFilter(EntityInfo entity

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



