|
@ -1,37 +1,26 @@
|
|
|
package com.yihu.jw.es.es;
|
|
|
|
|
|
import io.searchbox.client.JestClient;
|
|
|
|
|
|
import io.searchbox.client.JestClientFactory;
|
|
|
import io.searchbox.client.config.HttpClientConfig;
|
|
|
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.Client;
|
|
|
import org.elasticsearch.client.RestClient;
|
|
|
import org.elasticsearch.client.RestClientBuilder;
|
|
|
import org.elasticsearch.client.RestHighLevelClient;
|
|
|
import org.elasticsearch.client.transport.TransportClient;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
|
|
import org.elasticsearch.common.transport.TransportAddress;
|
|
|
import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.net.InetAddress;
|
|
|
import java.net.UnknownHostException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* Created by chenweida on 2017/6/5.
|
|
|
*/
|
|
|
|
|
|
@Component
|
|
|
public class ElasticFactory {
|
|
|
private static JestClientFactory factory = null;
|
|
@ -42,8 +31,6 @@ public class ElasticFactory {
|
|
|
private String tHost;// 59.61.92.90:9066,59.61.92.90:9068
|
|
|
@Value("${es.clusterName}")
|
|
|
private String clusterName;
|
|
|
@Value("${es.securityUser}")
|
|
|
private String securityUser;
|
|
|
//-----------------------------------jestClient----------------------------------------
|
|
|
|
|
|
/**
|
|
@ -67,13 +54,13 @@ public class ElasticFactory {
|
|
|
// Construct a new Jest client according to configuration via factory
|
|
|
factory = new JestClientFactory();
|
|
|
HttpClientConfig httpClientConfig = new HttpClientConfig
|
|
|
.Builder(Arrays.asList(hostArray))//http://59.61.92.90:9065,http://59.61.92.90:9067
|
|
|
.Builder(Arrays.asList(hostArray))
|
|
|
.multiThreaded(true)
|
|
|
.maxTotalConnection(50)// 最大链接
|
|
|
.maxConnectionIdleTime(120, TimeUnit.SECONDS)//链接等待时间
|
|
|
.connTimeout(60 * 1000)
|
|
|
.maxConnectionIdleTime(10, TimeUnit.MINUTES)//链接等待时间
|
|
|
.connTimeout(60 * 1000*10)
|
|
|
// .discoveryEnabled(true)
|
|
|
.readTimeout(60 * 1000)//60秒
|
|
|
.readTimeout(60 * 1000*10)//60秒
|
|
|
.build();
|
|
|
|
|
|
|
|
@ -101,16 +88,12 @@ public class ElasticFactory {
|
|
|
private synchronized void initTranClient() throws UnknownHostException {
|
|
|
if (transportClient == null) {
|
|
|
String[] hosts = tHost.split(",");
|
|
|
Settings settings = Settings.builder()
|
|
|
// es 集群的名称
|
|
|
.put("cluster.name", StringUtils.isEmpty(clusterName) ? "jkzl" : clusterName)
|
|
|
.put("client.transport.sniff", "true")
|
|
|
//账号密码
|
|
|
.put("xpack.security.user", securityUser)
|
|
|
Settings settings = Settings.settingsBuilder()
|
|
|
// .put("client.transport.sniff", true)//开启嗅探功能
|
|
|
.put("cluster.name", StringUtils.isEmpty(clusterName) ? "jkzl" : clusterName)//默认集群名字是jkzl
|
|
|
.build();
|
|
|
|
|
|
|
|
|
transportClient = new PreBuiltXPackTransportClient(settings);
|
|
|
transportClient = TransportClient.builder().settings(settings).build();
|
|
|
|
|
|
for (String oneHost : hosts) {
|
|
|
String[] hostAndport = oneHost.split(":");
|
|
@ -118,38 +101,5 @@ public class ElasticFactory {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//-----------------------------------restHighLevelClient----------------------------------------
|
|
|
|
|
|
|
|
|
private RestHighLevelClient restHighLevelClient = null;
|
|
|
|
|
|
public RestHighLevelClient getHighLevelClient() {
|
|
|
try {
|
|
|
initHighLevelClient();
|
|
|
return restHighLevelClient;
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
private synchronized void initHighLevelClient() throws UnknownHostException {
|
|
|
//初始化ES操作客户端172.26.0.112:9200
|
|
|
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
|
|
|
String user[] = securityUser.split(":");
|
|
|
credentialsProvider.setCredentials(AuthScope.ANY,
|
|
|
new UsernamePasswordCredentials(user[0], user[1])); //es账号密码
|
|
|
restHighLevelClient = new RestHighLevelClient(
|
|
|
RestClient.builder(
|
|
|
new HttpHost(esHost, 9200)
|
|
|
).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
|
|
|
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
|
|
|
httpClientBuilder.disableAuthCaching();
|
|
|
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
|
|
|
}
|
|
|
})/*.setMaxRetryTimeoutMillis(2000)*/
|
|
|
);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|