ElasticsearchConfig.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package com.bowintek.practice.config;
  2. import co.elastic.clients.elasticsearch.ElasticsearchClient;
  3. import co.elastic.clients.json.jackson.JacksonJsonpMapper;
  4. import co.elastic.clients.transport.ElasticsearchTransport;
  5. import co.elastic.clients.transport.rest_client.RestClientTransport;
  6. import co.elastic.clients.util.ContentType;
  7. import org.apache.http.HttpHeaders;
  8. import org.apache.http.HttpHost;
  9. import org.apache.http.HttpResponseInterceptor;
  10. import org.apache.http.message.BasicHeader;
  11. import org.elasticsearch.client.RestClient;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import javax.annotation.Resource;
  15. import java.util.List;
  16. @Configuration
  17. public class ElasticsearchConfig {
  18. @Resource
  19. EsConfig config;
  20. @Bean
  21. public ElasticsearchClient esClient() {
  22. RestClient restClient = RestClient.builder(new HttpHost(config.getHosts(),config.getPort()))
  23. .setHttpClientConfigCallback(httpClientBuilder
  24. ->httpClientBuilder.setDefaultHeaders(
  25. List.of(new BasicHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString())))
  26. .addInterceptorLast((HttpResponseInterceptor) (response, context)
  27. -> response.addHeader("X-Elastic-Product", "Elasticsearch"))).build();
  28. ElasticsearchTransport transport = new RestClientTransport(
  29. restClient, new JacksonJsonpMapper());
  30. ElasticsearchClient client = new ElasticsearchClient(transport);
  31. return client;
  32. }
  33. }