elasticsearch.wh.clusterName=whELK
elasticsearch.wh.userName=
elasticsearch.wh.password=
elasticsearch.wh.rest.hostNames=192.168.1.130
elasticsearch.wh.rest.port=9200
elasticsearch.wh.tcp.port=9300
elasticsearch.es.clusterName=esELK
elasticsearch.es.userName=
elasticsearch.es.password=
elasticsearch.es.rest.hostNames=192.168.1.130
elasticsearch.es.rest.port=9201
elasticsearch.es.tcp.port=9301
import lombok.extern.slf4j.Slf4j;
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.elasticsearch.client.Client;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
@Slf4j
@Configuration
public class WuhanESRestClient {
@Value("${elasticsearch.wh.userName}")
private String userName;
@Value("${elasticsearch.wh.password}")
private String password;
@Value("${elasticsearch.wh.rest.hostNames}")
private String hostName;
@Value("${elasticsearch.wh.rest.port}")
private Integer port;
@Value("${elasticsearch.wh.tcp.port}")
private Integer tcpPort;
@Value("${elasticsearch.wh.clusterName}")
private String clusterName;
@Bean(name = "TransportWhClient")
public TransportClient transportClient() throws Exception {
Settings settings = Settings.builder()
.put("cluster.name", clusterName)
.put("client.transport.sniff", false)
.build();
return new PreBuiltTransportClient(settings).addTransportAddress(new TransportAddress(InetAddress.getByName(hostName), tcpPort));
}
@Bean(name = "ElasticsearchTemplateWh")
public ElasticsearchTemplate elasticsearchTemplateWh(@Qualifier("TransportWhClient") TransportClient transportClient){
return new ElasticsearchTemplate(transportClient);
}
@Bean(name = "WuhanESRestClient", destroyMethod = "close")
public RestHighLevelClient getRestHighLevelClient() throws IOException {
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
RestHighLevelClient client = null;
log.info("要连接的节点的ip是{},端口是{},集群名为{}", hostName, port, clusterName);
try {
client = new RestHighLevelClient(
RestClient.builder(new HttpHost(InetAddress.getByName(hostName), port, "http"))
.setHttpClientConfigCallback(
httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)
)
);
} catch (UnknownHostException e) {
e.printStackTrace();
client.close();
}
return client;
}
}
import lombok.extern.slf4j.Slf4j;
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.elasticsearch.client.Client;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
@Slf4j
@Configuration
public class EnshiESRestClient {
@Value("${elasticsearch.es.userName}")
private String userName;
@Value("${elasticsearch.es.password}")
private String password;
@Value("${elasticsearch.es.rest.hostNames}")
private String hostName;
@Value("${elasticsearch.es.rest.port}")
private Integer port;
@Value("${elasticsearch.es.tcp.port}")
private Integer tcpPort;
@Value("${elasticsearch.es.clusterName}")
private String clusterName;
@Bean(name = "TransportEsClient")
public TransportClient transportClient() throws Exception {
Settings settings = Settings.builder()
.put("cluster.name", clusterName)
.put("client.transport.sniff", false)
.build();
return new PreBuiltTransportClient(settings).addTransportAddress(new TransportAddress(InetAddress.getByName(hostName), tcpPort));
}
@Bean(name = "ElasticsearchTemplateEs")
public ElasticsearchTemplate elasticsearchTemplateWh(@Qualifier("TransportEsClient") TransportClient transportClient) {
return new ElasticsearchTemplate(transportClient);
}
@Bean(name = "EnshiESRestClient", destroyMethod = "close")
public RestHighLevelClient getRestHighLevelClient() throws IOException {
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
RestHighLevelClient client = null;
log.info("要连接的节点的ip是{},端口是{},集群名为{}", hostName, port, clusterName);
try {
client = new RestHighLevelClient(
RestClient.builder(new HttpHost(InetAddress.getByName(hostName), port, "http"))
.setHttpClientConfigCallback(
httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)
)
);
} catch (UnknownHostException e) {
e.printStackTrace();
client.close();
}
return client;
}
}
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.List;
@Component
public class RestHighLevelClientUtil {
private static RestHighLevelClient WuhanESRestClient;
private static RestHighLevelClient EnshiESRestClient;
private static ElasticsearchTemplate ElasticsearchTemplateWh;
private static ElasticsearchTemplate ElasticsearchTemplateEs;
@Autowired
public RestHighLevelClientUtil(@Qualifier("WuhanESRestClient") RestHighLevelClient WuhanESRestClient,
@Qualifier("EnshiESRestClient") RestHighLevelClient EnshiESRestClient,
@Qualifier("ElasticsearchTemplateWh") ElasticsearchTemplate ElasticsearchTemplateWh,
@Qualifier("ElasticsearchTemplateEs") ElasticsearchTemplate ElasticsearchTemplateEs
) {
RestHighLevelClientUtil.WuhanESRestClient = WuhanESRestClient;
RestHighLevelClientUtil.EnshiESRestClient = EnshiESRestClient;
RestHighLevelClientUtil.ElasticsearchTemplateWh = ElasticsearchTemplateWh;
RestHighLevelClientUtil.ElasticsearchTemplateEs = ElasticsearchTemplateEs;
}
public static IndexResponse insert(IndexRequest indexRequest) throws IOException {
String city = DataSourceHolder.getDataSource();
IndexResponse indexResponse = null;
switch (CityEnum.valueOf(city)) {
case wuhan:
indexResponse = WuhanESRestClient.index(indexRequest);
System.err.println("wuhan elasticsearch 插入成功" + indexResponse);
break;
case enshi:
indexResponse = EnshiESRestClient.index(indexRequest);
System.err.println("enshi elasticsearch 插入成功" + indexResponse);
break;
default:
break;
}
return indexResponse;
}
public static DeleteResponse delete(DeleteRequest deleteRequest) throws IOException {
String city = DataSourceHolder.getDataSource();
DeleteResponse deleteResponse = null;
switch (CityEnum.valueOf(city)) {
case wuhan:
deleteResponse = WuhanESRestClient.delete(deleteRequest);
break;
case enshi:
deleteResponse = EnshiESRestClient.delete(deleteRequest);
break;
default:
break;
}
return deleteResponse;
}
public static UpdateResponse update(UpdateRequest updateRequest) throws IOException {
String city = DataSourceHolder.getDataSource();
UpdateResponse updateResponse = null;
switch (CityEnum.valueOf(city)) {
case wuhan:
updateResponse = WuhanESRestClient.update(updateRequest);
break;
case enshi:
updateResponse = EnshiESRestClient.update(updateRequest);
break;
default:
break;
}
return updateResponse;
}
public static SearchResponse get(SearchRequest searchRequest) throws IOException {
String city = DataSourceHolder.getDataSource();
SearchResponse searchResponse = null;
switch (CityEnum.valueOf(city)) {
case wuhan:
searchResponse = WuhanESRestClient.search(searchRequest);
System.err.println("wuhan WuhanESRestClient 查询成功" + searchResponse);
break;
case enshi:
searchResponse = EnshiESRestClient.search(searchRequest);
System.err.println("enshi EnshiESRestClient 查询成功" + searchResponse);
break;
default:
break;
}
return searchResponse;
}
public static List search(SearchQuery searchQuery, Class tClass) {
String city = DataSourceHolder.getDataSource();
List queryForList = null;
switch (CityEnum.valueOf(city)) {
case wuhan:
queryForList = ElasticsearchTemplateWh.queryForList(searchQuery, tClass);
System.err.println("wuhan ElasticsearchTemplateWh 查询成功" + queryForList);
break;
case enshi:
queryForList = ElasticsearchTemplateEs.queryForList(searchQuery, tClass);
System.err.println("enshi ElasticsearchTemplateEs 查询成功" + queryForList);
break;
default:
break;
}
return queryForList;
}
}