问题描述

今天遇到了个奇怪的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 一个对象存储即可