ES update无法保证字段排列顺序
这也是我在折腾毕设时发现的bug。如图,在kibana“开发工具-控制台”上,使用REST Api操作ElasticSearch进行文档的部分更新。重点关注红框:

而后,跳转到Discovery(查询)页面,查询更新结果:
可以看到,红框中的”@type”不在第一个位置了。
如果不太熟悉FastJson,这里解释一下:”@type”用于确定一个基类属于哪个子类
目前版本的FastJson,只能解析@type字段后的部分字段,也就是说,上图的”isCashing”和”cashingCount”就无法被反序列化出来了。这麻烦就大了!
解决方法就3种:
- 修复ElasticSearch端
- 去github提issue,毕竟自己没看源码也不会
- 修复FastJson包,参考链接:
- 自己打个补丁
- 具体方法就是解析字符串,String.indexOf/String.substring这类接口熟练操作即可