配置连接elasticSearch服务

140 阅读3分钟

主要流程分以下三步:

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版本

这个网上就有很多大佬传授了,可以借鉴一下这些文章:

blog.csdn.net/xyy1028/art…

如果遇到类似于下面图片中的jdk版本问题,可以看一下下面的链接

image.png

zhuanlan.zhihu.com/p/179765379…

总的来讲就是两个步骤:

1.官网下载对应版本的es服务器,注意自己的jdk版本,下载与自己jdk版本兼容的es版本

2.解压到本地,点击文件夹中/bin/elasticsearch.bat即可启动

linux版本

有的大佬是有自己的虚拟机或者云服务器的,可以选择Linux版本,尤其是云服务器,可以部署在上面,只要公开暴露地址,就可以一直请求这个服务了。

同样的网上很多大佬有指教的:

blog.csdn.net/LIU_ZHAO_YA…

www.jianshu.com/p/198091c99…

其中会涉及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;