com.alibaba.fastjson 对象转 json 剔除字段
问题背景描述
java 代码保存数据到 mysql 的同时需要保存一份到 es,由于对象字段很多,建两个实体类分别写值保存到 mysql、es 的话会比较繁琐,简单的方法就是公用一个实体类,通过 fastjson 将对象转成 json 存储到 es,在对象转 json 的过程中,由于实体类本身继承了父类中的字段属性,对于 mysql 没有影响,insert 时对应字段不保存即可,但是 es 的话即使已经建好了表结构(索引),如果数据中有新增字段,es 会自动增加字段,导致 es 原有的表结构(索引)遭到破坏,那么这就需要在对象转 json 的过程中去掉没必要的字段,保证原始 es 索引结构的统一。
问题处理
这里展示部分过滤代码供大家参考
复制代码
这样就可以去掉不必要的的字段了,下面贴两幅图比较一下,其中第一幅图是没有过滤非 es 索引字段时 es 中自动生成的索引结构,其实这部分字段不是手工创建 es 索引时添加的,而是实体类在转 json 时自动将父类中对应的字段加入时导致的
第二幅图就是添加了上述代码之后,重新建 es 索引,再通过程序写入数据时,由于过滤了不必要的字段之后存储的数据,数据结构如图
对比上图已经没有第一幅图红框中标出的字段属性了,达到了我们想要的效果。
版权声明: 本文为 InfoQ 作者【六月的雨在InfoQ】的原创文章。
原文链接:【http://xie.infoq.cn/article/7f989d9c4c8e869d03e9efed9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论