📢 本文章通过实战记录相关问题以及提供解决方案。
👤 公众号:恩故事还在继续
1. 环境需求
为了完成 Spring Boot 与 Elasticsearch 整合需要安装下面工具
1. springboot 2.1.5
2. elasticsearch 6.4.3
3. elasticsearch ik 6.4.3
4. postman (这个任意)
1.1 Elasticsearch 安装
🔗 Elasticsearch 官网 🔗 Elasticsearch 6.4.3 下载链接
配置环境变量
点击我的电脑 -> 高级系统设置 -> 环境变量 -> 系统变量 -> Path
D:\elasticsearch-6.4.3\bin
修改解压后 config 文件下的 elasticsearch.yml 自定义下面三个变量的属性
cluster.name: nowcode
如果不修改默认是 Linux 的地址
path.data: d:\data\elasticsearch_data
path.logs: d:\data\elasticsearch_log
1.2 Elasticsearch ik 安装
🔗 Elasticsearch ik 官网下载地址
🔗 Elasticserch ik 6.4.3 版本下载地址
解压 elasticsearch ik 到指定目录 (这里有个小坑需要注意)
我们首先在 elasticsearch 解压的目录下面找到 D:\elasticsearch-6.4.3\plugins
在 plugins 目录下面新建 ik 文件夹
然后将 elasticsearch ik 解压到 plugins 文件夹下
注意: 千万不要将 elasticsearch-analysis-ik-6.4.3 这个文件夹解压到 ik 里面
我们只需要 elasticsearch-analysis-ik-6.4.3 下一级的内容解压到 ik 即可
1.3 postman 安装
🔗 Postman 官网下载链接
2. 测试 Elasticsearch是否安装成功
首先,在 D:\elasticsearch-6.4.3\bin 打开 elasticsearch.bat
然后, windows + R 输入 cmd
分别使用下面这些命令进行测试:
查看健康状态
curl -X GET “localhost:9200/_cat/health?v“
查看节点
curl -X GET “localhost:9200/_cat/nodes?v“
查看索引
curl -X GET "localhost:9200/_cat/indices?v"
新建索引
curl -X PUT "localhost:9200/test"
删除索引
curl -X DELETE "localhost:9200/test"
3. SpingBoot 整合 Elasticsearch
3.1 配置 spring-boot-starter-data-elasticsearch 依赖
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-elasticsearch -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.1.6.RELEASE</version>
</dependency>
在 application.properties 配置 ElasticserachProperties:
spring.data.elasticsearch.cluster-name=nowcoder
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
3.2 启动 elasticsearch 失败解决方法
原因是 netty 启动冲突问题, 需要在 CommunityApplication 编写 init()
package org.example.community;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.PostConstruct;
@SpringBootApplication
public class CommunityApplication {
@PostConstruct
public void init(){
// 解决 netty 启动冲突问题
// see Netty4Utils.setAvailableProcessors()
System.setProperty("es.set.netty.runtime.available.processors", "false");
}
public static void main(String[] args) {
SpringApplication.run(CommunityApplication.class, args);
}
}
3.3 elasicsearch 版本冲突解决方案
按照课程流程走的话 elasticsearch 版本和 elasticsearch ik 都是 6.4.3
其次就是Springboot 版本必须是 2.1.5, 高版本的话建议将 Springboot 降低到低版本
如果上面版本太高或者太低会出现各种不兼容的问题
具体做法如下所示:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- <version>2.5.12</version>-->
<version>2.1.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
在 pom.xml 文件里面将原来的 version 版本修改为 2.1.5 ,然后 maven 会自动将 2.1.5 需要的配置添加进去,我们这时候需要等待一会,接着我们这样操作:
在 IDEA 中点击 File -> invaildate and restart
当编译器再次启动的时候就可以了。
4. 参考文献
🔗 1. SpringBoot 整合 Elasticsearch
5. 联系我
|