#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;
}
整合的部分就结束了,下一篇会有使用部分。