elastic-data-test

ElasticConfig.java 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package com.vcarecity.publish.config;
  2. import org.apache.http.HttpHost;
  3. import org.apache.http.auth.AuthScope;
  4. import org.apache.http.auth.Credentials;
  5. import org.apache.http.auth.UsernamePasswordCredentials;
  6. import org.apache.http.client.CredentialsProvider;
  7. import org.apache.http.impl.client.BasicCredentialsProvider;
  8. import org.elasticsearch.client.RestClient;
  9. import org.elasticsearch.client.RestClientBuilder;
  10. import org.elasticsearch.client.RestHighLevelClient;
  11. import org.springframework.boot.autoconfigure.elasticsearch.rest.RestClientProperties;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import java.net.MalformedURLException;
  15. import java.net.URL;
  16. import java.util.List;
  17. /**
  18. * @author Kerry on 19/12/11
  19. */
  20. @Configuration
  21. public class ElasticConfig {
  22. @Bean(destroyMethod = "close")
  23. public RestHighLevelClient restHighLevelClient(RestClientProperties properties) throws MalformedURLException {
  24. final List<String> uris = properties.getUris();
  25. HttpHost[] httpHosts = new HttpHost[uris.size()];
  26. for (int i = 0; i < uris.size(); i++) {
  27. final URL url = new URL(uris.get(i));
  28. httpHosts[i] = new HttpHost(url.getHost(), url.getPort(), url.getProtocol());
  29. }
  30. final RestClientBuilder builder = RestClient.builder(httpHosts);
  31. CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
  32. Credentials credentials = new UsernamePasswordCredentials(properties.getUsername(), properties.getPassword());
  33. credentialsProvider.setCredentials(AuthScope.ANY, credentials);
  34. builder.setHttpClientConfigCallback(http -> {
  35. http.setDefaultCredentialsProvider(credentialsProvider);
  36. return http;
  37. });
  38. builder.setRequestConfigCallback(requestBuilder -> {
  39. requestBuilder.setConnectTimeout((int) properties.getConnectionTimeout().getSeconds());
  40. return requestBuilder;
  41. });
  42. return new RestHighLevelClient(builder);
  43. }
  44. }