DSC_1728.NEF_compressed.JPEG#0x01 引入依赖

       
        <!--spring data es-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>   
        <!--es clients-->
        <dependency>
            <groupId>co.elastic.clients</groupId>
            <artifactId>elasticsearch-java</artifactId>
            <version>8.15.1</version>
        </dependency>
​

#0x02 配置yaml

# ES相关配置
elasticsearch:
  enabled: true
  address: 'xx.xx.xx.xx'
  port: 9200
  apiKey: 'xxxx'
  userName: 'xxxx'
  passWord: 'xxxxx'
  scheme: 'http'

#0x03 配置类

ElasticSearchConfiguration.java
@Configuration
@RequiredArgsConstructor
@ConditionalOnProperty(prefix = "elasticsearch", name = "enabled", havingValue = "true", matchIfMissing = true)
@EnableConfigurationProperties({ElasticSearchProperties.class})
public class ElasticSearchConfiguration {
 
    private final ElasticSearchProperties properties;
​
    @Bean
    public ElasticsearchClient elasticsearchClient() {
        return new ElasticsearchClient(getElasticsearchTransport());
    }
​
    @Bean
    public ElasticsearchAsyncClient elasticsearchAsyncClient() {
        return new ElasticsearchAsyncClient(getElasticsearchTransport());
    }
​
​
    private ElasticsearchTransport getElasticsearchTransport() {
        CredentialsProvider credentialsProvider =
                new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials(properties.getUserName(), properties.getPassWord()));
        // Create the low-level client
        RestClient restClient = RestClient
                .builder(properties.getHost())
                .setHttpClientConfigCallback(httpAsyncClientBuilder -> httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider))
//                .setDefaultHeaders(new Header[]{
//                        new BasicHeader("Authorization", "ApiKey " + properties.getApiKey())
//                })
                .build();
        return new RestClientTransport(
                restClient, new JacksonJsonpMapper());
    }
    
}
ElasticSearchProperties.java
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ConfigurationProperties("elasticsearch")
public class ElasticSearchProperties {
​
    private String scheme;
​
    private String address;
​
    private Boolean enabled = true;
​
    private Integer port;
​
    private String apiKey;
​
    private String userName;
​
    private String passWord;
​
    public HttpHost getHost() {
        return new HttpHost(getAddress(), getPort(), getScheme());
    }
​
}

#0x04 使用

@Service
public class ElasticServiceImpl implements ElasticService {
    @Autowired
    ElasticsearchClient elasticsearchClient;
    @Autowired
    ElasticsearchAsyncClient elasticsearchAsyncClient;
}

整合的部分就结束了,下一篇会有使用部分。