SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化

环境配置问题,博主采用的是gradle进行项目管理的,那么首先在build.gradle中添加依赖如下:
SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化_第1张图片
接下来需要在application.properties文件中配置Elaticsearch的服务地址以及设置连接时间,如下图:
SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化_第2张图片
关于elasticsearch的下载与安装,这里是有一个大坑的,springboot不同版本支持不同版本的elasticsearch,这里可以在项目的外部库中查看,具体如下:
SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化_第3张图片

如上图,博主这里采用的是springboot 2.0.0版本,集成的elasticsearch版本是5.6.8,所以博主下载的elasticsearch版本为elasticsearch-5.5.1。这里要注意下载的elasticsearch版本和使用的springboot集成的elasticsearch版本对应。elasticsearch下载后,解压到任意目录即可。如果出现如下错误:

NoNodeAvailableException: None of the configured nodes are available: [{#t

那就是elasticsearch版本与springboot集成的版本不一致,下载与springboot集成的客户端版本匹配的elasticsearch,或者修改springboot的版本,以匹配已经安装的elasticsearch。

gradle指定springboot的版本,修改build.gradle中的配置,如下图箭头中所指的 version 后的版本:

SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化_第4张图片
SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化_第5张图片
启动elasticsearch,进入bin目录,运行elasticsearch.bat即可,成功后命令窗口如下:
SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化_第6张图片
如何查看成功启动,浏览器网址栏中输入:localhost:9200 成功后会看到如下界面:
SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化_第7张图片

好了,现在运行项目就能体验ES的强大了

用elasticsearch存储Document类型的实体类时,实体类需要实现Serializable接口,并为实体类生成序列号,否则查询结果很可能会得到unKNown instance:

SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化_第8张图片
其实无论我们是把数据存入到关系型数据库还是非关系型数据库,我们都需要对存入数据进行序列化,因为在异地传输,存储时序列化可以保证我们的传输以及之后我们能原样的读取数据,那么由于在关系型数据库,比如MySQL中,我们其实存储的数实体类的字段属性,多为String,int等类型,这些类型数据库都有对应的数据结构支持,而且这些类型在声明是以及实现了Serializable接口的,
SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化_第9张图片
所以我们才不用手动实现该接口,但是像ES这种非关系型数据库(NoSQL),其实存入的是整个实体类对象,NoSQL并没有支持他们的数据结构,所以为了保证我们能够正确读取数据,我们就需要实体类实现Serializable接口,并为实体类生成序列号。
其实java中的Serializable接口并没有定义任何东西,是一个空的接口,具体的序列化操作还是需要交给JVM来做。
再一个类序列化之后的序列化id的作用,是在反序列化的时候,如果系统检测到反序列化文件的id与当前类的序列化id不同,那么反序列化就会失败,他能保证我们反序列化得到完全一样的结果。

你可能感兴趣的:(SpringBoot集成Elasticsearch踩坑,修改springboot版本,实体类序列化)