【ES】RestHighLevelClient连接阿里ElasticSearch7.10(一)

由于是本地连接,阿里云es需要修改相关配置。确保本地可以访问

1.开通公网访问(如果是用阿里ESC服务器。配置了同一专用网络可以不用开通)

2.修改阿里云配置允许自动创建索引

3.添加本地网络白名单

安全配置中点击修改添加本机公网ip

查看本机ip

至此阿里云es环境配置完成。

使用RestHighLevelClient连接阿里云

1.导入maven包 rest-high-level-client版本可由spring管理 elasticsearch同步阿里云机器版本即可(本文为7.10.0版本实例连接方式)

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

2.新建连接配置

application.properties配置

elasticsearch.host: 私网/公网地址
elasticsearch.port: 9200
elasticsearch.username: elastic(用户名)
elasticsearch.password: 密码

若自己搭建es未设置密码。密码设置为0即可。

新建类

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.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 连接阿里云es配置
 */
@Configuration
public class ElasticsearchConfiguration {
    @Value("${elasticsearch.host}")
    private String host;

    @Value("${elasticsearch.port}")
    private int port;

    @Value("${elasticsearch.username}")
    private String USERNAME;

    @Value("${elasticsearch.password}")
    private String PASSWORD;


    //生命周期结束销毁调用 RestHighLevelClient close方法释放资源
    @Bean(destroyMethod = "close", name = "client")
    public RestHighLevelClient initRestClient() {

        if (PASSWORD.equals("0")) {
            RestClientBuilder builder = RestClient.builder(new HttpHost(host, port));
            return new RestHighLevelClient(builder);
        }

        //如果没配置密码就可以不用下面这两部
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(USERNAME, PASSWORD));

        RestClientBuilder builder = RestClient.builder(new HttpHost(host, port))
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                httpClientBuilder.disableAuthCaching();
                return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
            }
        });

        return new RestHighLevelClient(builder);
    }

}

3.连接使用

@Autowired
    protected RestHighLevelClient restHighLevelClient;
 public String saveForObject() {
         IndexRequest request = new IndexRequest();
        request.index("apitest_index");
        request.type("apitest_type");
        request.id("2");
        Map<String, Object> source = new HashMap<>();
        source.put("user", "kimchy");
        source.put("post_date", new Date());
        source.put("message", "trying out Elasticsearch");
        request.source(source);
        IndexResponse response = null;
        try {
            response = restHighLevelClient.index(request, RequestOptions.DEFAULT);
            if(response.getResult().name().equalsIgnoreCase("created")){
                System.out.println("添加成功");
            }else {
                System.out.println("添加失败");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

调用即可。

连接完成。

经验分享 程序员 微信小程序 职场和发展