问题描述
今天遇到了个奇怪的bug,Elasticsearch不保存数据,MySQL可以保存数据,但是在测试部分中Elasticsearch保存数据时正常的,并不是连接错误,刷新缓存也没有解决
测试部分代码
@Test
public void initPost(){
List<Post> allPost = postService.getAllPost();
postDao.saveAll(allPost);
}
控制层代码
@Autowired
Post putpost
@PutMapping("/post")
public String putPost(@RequestParam("postname") String name,
@RequestParam("postcontent") String content,
HttpSession session,Model model
){
userforpost= (User) session.getAttribute("loginUser");
putpost=new Post();
putpost.setTime(new Date(System.currentTimeMillis()));
putpost.setContent(content);
putpost.setVisible(1);
putpost.setWritter(userforpost.getId());
putpost.setName(name);
putpost.setTheme(1);
System.out.println("####");
System.out.println(putpost);
System.out.println("####");
boolean save = postService.save(putpost);
System.out.println(putpost.getId());
Post save1 = postDao.save(putpost);
System.out.println(save1);
model.addAttribute("msg",save?"发布成功":"发布失败");
return "table/postput";
}
排查与解决
在搜索文档数据中,发现了一个奇怪的文档数据"_class": "com.lrdhappy.forum.bean.Post$$EnhancerBySpringCGLIB$$fdab953d"
{
- "_index": "post",
- "_type": "_doc",
- "_id": "0",
- "_version": 5,
- "_score": 1,
- "_source": {
- "_class": "com.lrdhappy.forum.bean.Post$$EnhancerBySpringCGLIB$$fdab953d",
- "id": 0,
- "writter": 0,
- "visible": 0,
- "theme": 0}
}
经过搜索发现是空指针问题,也就是自动注入的数据,并没有传入到Elasticsearch中,解决方法:
保存时候new 一个对象存储即可
Q.E.D.