主要流程分以下三步:
1.安装部署好es服务器
2.配置es可视化工具(选择)
3.项目连接es服务器
请注意,我这个是elasticSearch8.14.3版本的服务,其中,7.X版本与8.X版本是有不小的区别的,各位大佬们如果是7.X版本的请注意一下。
还有,elasticSearch8.14.3对应的jdk版本是jdk17,因此其项目要看准了是哪一个jdk版本的,下载对应的elasticSearch版本的服务器,建议可以上网查一下。
一.安装部署es服务器
其中,安装部署es服务器分为两种:
1.windows版本
2.linux版本
Windows版本
这个网上就有很多大佬传授了,可以借鉴一下这些文章:
如果遇到类似于下面图片中的jdk版本问题,可以看一下下面的链接
zhuanlan.zhihu.com/p/179765379…
总的来讲就是两个步骤:
1.官网下载对应版本的es服务器,注意自己的jdk版本,下载与自己jdk版本兼容的es版本
2.解压到本地,点击文件夹中/bin/elasticsearch.bat即可启动
linux版本
有的大佬是有自己的虚拟机或者云服务器的,可以选择Linux版本,尤其是云服务器,可以部署在上面,只要公开暴露地址,就可以一直请求这个服务了。
同样的网上很多大佬有指教的:
其中会涉及jdk版本问题、还有内存不足问题,因为很多大佬的云服务器可能就2gb,但是es默认是4gb,这就很难受,因此可以借鉴这些文章,修改es的内存分配大小
总的来讲也是两个步骤,大佬们可以在Windows下载好tar.gz包然后上传到服务器上,也可以在linux下使用以下指令:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-linux-x86_64.tar.gz
注意选择好自己的版本哈
二.配置可视化工具
也是分为Windows版本和Linux版本的
Windows版本的:blog.csdn.net/weixin_6858…
Linux版本的:juejin.cn/post/745234… blog.csdn.net/2301_815475…
当然,对于es的可视化工具,其实还有很多,比如我使用的是ElasticView,可以借鉴一下这个: blog.csdn.net/qq_39813400…
三.springboot项目连接es服务器
1.在application.yml文件中添加以下信息:
elasticsearch:
username: {用户名}
passwd: {密码}
# 多个IP逗号隔开
hosts: {ip地址}
2.pom.xml依赖
<!-- Elasticsearch Java Client -->
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.14.3</version>
</dependency>
这个要注意版本问题,一定要配置正确自己的版本
3.创建配置文件
@Configuration
@Slf4j
public class BeanConfig {
@Setter
@Value("${elasticsearch.hosts}")
private String hosts;
@Setter
@Value("${elasticsearch.username}")
private String username;
@Setter
@Value("${elasticsearch.passwd}")
private String passwd;
/**
* 解析配置的字符串,转为HttpHost对象数组
* @return
*/
private HttpHost[] toHttpHost() {
if (!StringUtils.hasLength(hosts)) {
throw new RuntimeException("invalid elasticsearch configuration");
}
String[] hostArray = hosts.split(",");
HttpHost[] httpHosts = new HttpHost[hostArray.length];
HttpHost httpHost;
for (int i = 0; i < hostArray.length; i++) {
String[] strings = hostArray[i].split(":");
httpHost = new HttpHost(strings[0], Integer.parseInt(strings[1]), "http");
httpHosts[i] = httpHost;
}
return httpHosts;
}
@Bean(name = "client")
public ElasticsearchClient clientByPasswd() {
final CredentialsProvider credentialsProvider =
new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(username, passwd));
RestClientBuilder builder = RestClient.builder(toHttpHost())
.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(
HttpAsyncClientBuilder httpClientBuilder) {
return httpClientBuilder
.setDefaultCredentialsProvider(credentialsProvider);
}
});
RestClient restClient = builder.build();
// Create the transport with a Jackson mapper
ElasticsearchTransport transport = new RestClientTransport(
restClient, new JacksonJsonpMapper());
// And create the API client
ElasticsearchClient client = new ElasticsearchClient(transport);
//ElasticsearchAsyncClient asyncClient = new ElasticsearchAsyncClient(transport);
return client;
}
}
这里是创建一个生成elasticSearch服务的bean,bean名称是client,
这个时候只要我们在代码中正常注入bean就可以使用es服务了:
@Resource(name="client")
private ElasticsearchClient elasticsearchClient;