springboot2.1.*集成远程elasticsearch6.7服务连接教程

springboot2.1*集成远程elasticsearch服务(阿里云租的)详细教程
小弟最近在捣腾公司项目中的搜索业务,考虑到业界成熟的方案,选择了阿里云的elasticsearch服务(当然也可以下载开源的:https://www.elastic.co/cn/downloads/elasticsearch),elasticsearch下面简称es服务,废话不多说,进入主题。
如果你按照网上千篇一律的教程,springboot集成es启动时出现错误,常见的有:
org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available
还有:
elasticsearch.xxx.jar版本内的jar包缺失等,
上述问题的根源基本都是springboot版本和es的版本不一致导致的;本文重点介绍高版本的集成;
使用工具类RestHighLevelClient连接远程es的服务,因为目前为止spring-data-elasticsearch还不支持es6.0+以上的版本;所以只能使用官方维护的工具类连接;远程的es服务访问是需要用户名密码的,而很巧的是本地下载运行的es是不需要的,直接运行localhost:9200就能看到信息,网上很多教程都是根据这个写的,连接远程es服务的教程我发现的不多;下面上代码:
pom.xml依赖包
es相关的依赖这几个就足够了
启动的配置bean:

/**
 * 主机
 */
@Value("${elasticsearch.host}")
private String esHost;

/**
 * 传输层端口,注意和ES的Restful API默认9200端口有区分
 */
@Value("${elasticsearch.port}")
private int esPort;

/**
 * 集群名称
 */
@Value("${elasticsearch.clustername}")
private String esClusterName;

/**
 * 用户名
 */
@Value("${elasticsearch.username}")
private String userName;
@Value("${elasticsearch.password}")
private String password;


@Bean
public RestHighLevelClient client() {
    log.info("开始初始化Elasticsearch");
    try {
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials(userName, password));

        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(new HttpHost(esHost, esPort))
                        .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                            @Override
                            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                                return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                            }
                        })
        );
        return client;
    } catch (Exception ex) {
        log.error("es初始化出错....");
        ex.printStackTrace();
    }
    return null;
}

配置文件(下面修改为你的地址):
elasticsearch.host=es-xxx.aliyuncs.com
elasticsearch.port=9200
elasticsearch.clustername=es-xxx(这个名称不知道的同学,直接浏览器访问es-xxx.aliyuncs.com:9200可以看到)
elasticsearch.username=elastic
elasticsearch.password=xxxx

OK就是这么简单,下面看看启动效果:无报错
启动成功
这里我们新建一个索引验证连接是否有效:
浏览器访问接口(当然前提是接口写好哈):localhost:9998/test/createIndex/wangxq_2:
在这里插入图片描述
然后浏览器查询已建好的索引:http://xxxxxxxxxxxxxxxxx:9200/_cat/indices?v,即可以看到刚刚新建的索引已经加上去;证明我们这个连接远程es的方式是没有问题的。
如果有写的不对的地方,欢迎指正,我确实是使用了很多种方式连接(transport(准备被抛弃了),jest,spring-data-elasticsearch),走了不少弯路才总结出来这套方法,希望可以帮到需要的同学。下面可能出一篇es增删改查java的接口,下面附上一个es官方的文档地址:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.7/java-rest-high-delete-index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值