es连接方式(High level rest client)
1、引入jar包
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.4.3</version>
<exclusions>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
<exclusion>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.4.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>6.4.3</version>
<scope>compile</scope>
</dependency>
2、没有密码的连接方式
package com.example.shiro.db;
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 java.io.IOException;
public class EsClient {
@Value("${es.http.server}")
private String httpServer;
private RestHighLevelClient client;
public RestHighLevelClient getInstance() {
if (client == null) {
synchronized (EsClient.class) {
if (client == null) {
String[] nodes = httpServer.split(",");
HttpHost[] servers = new HttpHost[nodes.length];
for (int i = 0; i < nodes.length; i++) {
String[] node = nodes[i].split(":");
servers[i] = new HttpHost(node[0], Integer.parseInt(node[1]), "http");
}
client = new RestHighLevelClient(servers);
}
}
}
return client;
}
public void close() {
try {
if (client != null) {
client.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3、需要密码的连接代码
package com.example.shiro.db;
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 java.io.IOException;
public class EsClient {
@Value("${es.http.server}")
private String httpServer;
@Value("${es.http.user}")
private String user;
@Value("${es.http.pwd}")
private String pwd;
private RestHighLevelClient client;
public RestHighLevelClient getInstance() {
if (client == null) {
synchronized (EsClient.class) {
if (client == null) {
String[] nodes = httpServer.split(",");
HttpHost[] servers = new HttpHost[nodes.length];
for (int i = 0; i < nodes.length; i++) {
String[] node = nodes[i].split(":");
servers[i] = new HttpHost(node[0], Integer.parseInt(node[1]), "http");
}
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, pwd));
RestClientBuilder restClientBuilder = RestClient.builder(servers)
.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
});
client = new RestHighLevelClient(restClientBuilder);
}
}
}
return client;
}
public void close() {
try {
if (client != null) {
client.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}