【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实现多线程数据分片下载
下一篇:
时下流行的深度学习数据标注工具
