如何配置Java的Elasticsearch环境并接入RestHighLevelClient

来源:AI视频音频作者:日本程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《如何配置Java的Elasticsearch环境并接入RestHighLevelClient》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何配置Java的Elasticsearch环境并接入RestHighLevelClient》有用,将其分享出去将是对创作者最好的鼓励。

在Java项目中接入Elasticsearch并使用RestHighLevelClient进行开发,需要先完成环境搭建和客户端配置工作,整个过程涉及依赖管理、客户端初始化、功能验证三个核心环节。不同版本的Elasticsearch需要匹配对应版本的客户端依赖,否则会出现兼容性问题导致连接失败。

如何配置Java的Elasticsearch环境并接入RestHighLevelClient

环境准备

首先需要确保本地已经安装并启动了Elasticsearch服务,同时记录服务的访问地址和端口,默认情况下Elasticsearch的HTTP访问端口为9200。如果你的Elasticsearch配置了安全认证,还需要提前准备好用户名和密码,后续客户端配置时会用到这些信息。

引入依赖

在Maven项目的pom.xml文件中添加RestHighLevelClient的依赖,注意依赖版本需要和你的Elasticsearch服务版本保持一致,例如Elasticsearch服务版本为7.17.0,客户端版本也选择7.17.0即可,避免版本不兼容问题。

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.17.0</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.17.0</version>
</dependency>

如果是Gradle项目,则在build.gradle文件中添加如下依赖:

dependencies {
    implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.17.0'
    implementation 'org.elasticsearch:elasticsearch:7.17.0'
}

初始化RestHighLevelClient

依赖引入完成后,就可以编写代码初始化RestHighLevelClient实例了。初始化时需要配置Elasticsearch服务的访问地址,如果有多个节点可以添加多个HttpHost实例。

无安全认证的配置方式

如果Elasticsearch没有开启安全认证,直接使用服务地址和端口初始化即可:

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;

public class EsClientUtil {
    private static RestHighLevelClient client;

    public static RestHighLevelClient getClient() {
        if (client == null) {
            // 初始化客户端,配置Elasticsearch服务地址和端口
            client = new RestHighLevelClient(
                RestClient.builder(
                    new HttpHost("127.0.0.1", 9200, "http")
                    // 如果有多个节点,可以继续添加new HttpHost实例
                )
            );
        }
        return client;
    }

    // 关闭客户端的方法
    public static void closeClient() {
        if (client != null) {
            try {
                client.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

有安全认证的配置方式

如果Elasticsearch开启了安全认证,需要在初始化时添加认证信息:

import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;

public class EsClientUtil {
    private static RestHighLevelClient client;

    public static RestHighLevelClient getClient() {
        if (client == null) {
            // 配置认证信息
            final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
            credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials("elastic", "your_password"));

            // 初始化客户端时传入认证配置
            client = new RestHighLevelClient(
                RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
                    .setHttpClientConfigCallback(httpClientBuilder -> 
                        httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider))
            );
        }
        return client;
    }

    public static void closeClient() {
        if (client != null) {
            try {
                client.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

验证客户端连接

初始化完成后,可以编写一个简单的测试方法验证客户端是否能够正常连接Elasticsearch服务,比如获取集群的健康状态信息。

import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;

public class EsTest {
    public static void main(String[] args) {
        RestHighLevelClient client = EsClientUtil.getClient();
        try {
            // 创建集群健康请求
            ClusterHealthRequest request = new ClusterHealthRequest();
            // 执行请求获取响应
            ClusterHealthResponse response = client.cluster().health(request, RequestOptions.DEFAULT);
            // 输出集群状态
            System.out.println("集群状态:" + response.getStatus().toString());
            System.out.println("集群名称:" + response.getClusterName());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭客户端
            EsClientUtil.closeClient();
        }
    }
}

如果运行后能够正常输出集群的状态和名称,说明RestHighLevelClient已经成功接入,后续就可以使用该客户端进行索引创建、文档增删改查等操作了。

常见问题排查

  • 如果出现NoNodeAvailableException异常,首先检查Elasticsearch服务是否正常运行,访问地址和端口是否正确,防火墙是否放行了对应端口。
  • 如果出现版本冲突异常,检查客户端依赖版本和Elasticsearch服务版本是否匹配,尽量保持两者主版本和次版本一致。
  • 如果开启了安全认证仍然连接失败,检查用户名和密码是否正确,以及Elasticsearch的认证配置是否生效。

ElasticsearchRestHighLevelClientJava环境配置修改时间:2026-07-20 01:30:29

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。