【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(); } }
调用即可。
连接完成。
上一篇:
JS实现多线程数据分片下载
下一篇:
时下流行的深度学习数据标注工具