RestClientConfig.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package com.tzy.elasticsearch.config;
  2. import org.apache.http.HttpHost;
  3. import org.elasticsearch.client.RestClient;
  4. import org.elasticsearch.client.RestClientBuilder;
  5. import org.elasticsearch.client.RestHighLevelClient;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;
  10. import javax.annotation.PostConstruct;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. //@Configuration
  14. public class RestClientConfig extends AbstractElasticsearchConfiguration {
  15. // @Value("${elasticsearch.rest.uris}")
  16. private String uris;
  17. @Bean
  18. public RestHighLevelClient buildRestHighLevelClient() {
  19. return elasticsearchClient();
  20. }
  21. /**
  22. * 防止netty的bug
  23. * java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]
  24. */
  25. @PostConstruct
  26. void init() {
  27. System.setProperty("es.set.netty.runtime.available.processors", "false");
  28. }
  29. @Override
  30. public RestHighLevelClient elasticsearchClient() {
  31. // 拆分地址
  32. List<HttpHost> hostLists = new ArrayList<>();
  33. String[] hostArray = uris.split(",");
  34. for (String addr : hostArray) {
  35. String host = addr.split(":")[0];
  36. String port = addr.split(":")[1];
  37. hostLists.add(new HttpHost(host, Integer.parseInt(port), "http"));
  38. }
  39. // 转换成 HttpHost 数组
  40. HttpHost[] httpHosts = hostLists.toArray(new HttpHost[]{});
  41. // 构建连接对象
  42. RestClientBuilder builder = RestClient.builder(httpHosts);
  43. // 设置用户名、密码
  44. /*CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
  45. credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(userName,password));*/
  46. // 连接延时配置
  47. /*builder.setRequestConfigCallback(requestConfigBuilder -> {
  48. requestConfigBuilder.setConnectTimeout(connectTimeOut);
  49. requestConfigBuilder.setSocketTimeout(socketTimeOut);
  50. requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);
  51. return requestConfigBuilder;
  52. });*/
  53. // 连接数配置
  54. /*builder.setHttpClientConfigCallback(httpClientBuilder -> {
  55. httpClientBuilder.setMaxConnTotal(maxConnectNum);
  56. httpClientBuilder.setMaxConnPerRoute(maxConnectNumPerRoute);
  57. httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
  58. return httpClientBuilder;
  59. });*/
  60. return new RestHighLevelClient(builder);
  61. /*final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
  62. .connectedTo(uri)
  63. .build();
  64. return RestClients.create(clientConfiguration).rest();*/
  65. }
  66. }