@Configuration
class ElasticsearchConfig(
private val prop: ElasticsearchProperty,
) : ReactiveElasticsearchConfiguration() {
override fun clientConfiguration(): ClientConfiguration {
val credentialsProvider = BasicCredentialsProvider().apply {
setCredentials(AuthScope.ANY, UsernamePasswordCredentials(prop.username, prop.password))
}
return ClientConfiguration.builder()
.connectedTo(*prop.hostnames.toTypedArray())
.withClientConfigurer(
ElasticsearchClients.ElasticsearchHttpClientConfigurationCallback { httpAsyncClientBuilder ->
httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider)
}
)
.build()
}
override fun reactiveElasticsearchOperations(
elasticsearchConverter: ElasticsearchConverter,
reactiveElasticsearchClient: ReactiveElasticsearchClient
): ReactiveElasticsearchOperations =
super.reactiveElasticsearchOperations(
elasticsearchCustomConverter(),
ElasticsearchClients.createReactive(clientConfiguration())
)
fun elasticsearchCustomConverter(): ElasticsearchConverter =
MappingElasticsearchConverter(SimpleElasticsearchMappingContext())
.apply {
val customConverters = listOf(
// ADD CUSTOM CONVERTER HERE!!
StringToLocalDateTimeConverter(),
CodeEnumReadingConverterFactory(),
)
this.setConversions(ElasticsearchCustomConversions(customConverters))
this.afterPropertiesSet()
}
}
ReactiveElasticsearchClient 환경 설정
SpringBoot3, JDK17 변경 사항 및 각 모듈 설명