ps:集成问题3天的bug终于解决,大家也许在集成的时候也会碰到这样的问题,切记安安静静坐下来喝杯茶
-
首先讲真的,elasticsearch版本不兼容问题太严重,由于也是小白,在遇到问题时手无足措,下面来说一下,我再遇到这个集成问题的思路,但愿能帮到大家,请求发出时,首先看开发工具(idea,ecplise)控制台是否报错,其次看elasticsearch控制台是否报错。
-
elasticsearch目前官网上最新版本是7.2版本,如果有下载这个版本的兄弟,恭喜你,估计是与springboot2.0版本是不兼容的,不兼容异常可以在elasticsearch控制台上找到,在这里不说了(想恢复原来的版本不兼容,发现太麻烦。。)
-
如果遇到版本不兼容的情况,那我们肯定是想换版本啊,但是发现在elasticsearch官网上找不到(原谅我的英文太差),后来加了工作人员的wx索要了历史版本网址,选择版本下载就好,我这边下载的是6.8,其余的不清楚
-
历史版本网址
(https://www.elastic.co/downloads/past-releases#elasticsearch)
如果有下载kibana可视化的同学,记得一定要把kibana换成与elasticsearch一个版本的(不换的话有可能会出现意想不到的错误),kibana历史版本下载可以将上述网址#后面的换成kibana就可以。 -
刚下载elasticsearch与kibana的同学,不建议去修改它们中的配置文件,一是没有必要去修改,二是咱们不太熟悉嘛。说完了这些便是上代码了
-
首先配置文件application.yml
server:
port: 8091
spring:
data:
elasticsearch:
cluster-nodes: localhost:9300
local: true
repositories:
enabled: true
9300为java访问elasticsearch端口
- 这是实体类@Document代表文档indexName与type分别代表索引名称与索引类型
@Document(indexName = "testgoods",type = "goods")
public class GoodsInfo {
private Long id;
private String name;
private String description;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public GoodsInfo(Long id, String name, String description) {
this.id = id;
this.name = name;
this.description = description;
}
public GoodsInfo() {
}
}
- dao层继承ElasticsearchRepository这个类就好,K为实体类的类型,
@Component
public interface GoodsRepository extends ElasticsearchRepository<GoodsInfo, Long> {
}
- Controller类
@RestController
public class Controller {
@Autowired
private GoodsRepository goodsRepository;
@GetMapping("save")
public String save(){
GoodsInfo goodsInfo = new GoodsInfo(System.currentTimeMillis(),
"商品"+System.currentTimeMillis(),"这是一个测试商品");
goodsRepository.save(goodsInfo);
return "success";
}
}
- 启动类
@ComponentScan("error*")
@SpringBootApplication
public class SpringbootApplicon {
public static void main(String [] args){
SpringApplication.run(SpringbootApplicon.class, args);
}
}
- 这就集成好了,最后再吐槽一下,版本问题真的很烦人。PS 不是有的不写注释,而是我也不会啊。。