Untitled

 avatar
unknown
plain_text
5 months ago
1.8 kB
5
Indexable
@Configuration
class ElasticsearchConfig(
    @Value("\${spring.elasticsearch.host:}")
    private val host: String,
    @Value("\${spring.elasticsearch.port:}")
    private val port: Int,
    @Value("\${spring.elasticsearch.username:}")
    private val userName: String,
    @Value("\${spring.elasticsearch.password:}")
    private val password: String,
    @Value("\${spring.profiles.active:local}")
    private val profile: String
) : ReactiveElasticsearchConfiguration() {
    val log = logger()
    override fun clientConfiguration(): ClientConfiguration {
        log.info("Trying to connect to $host:$port using client configuration")
        return ClientConfiguration.builder()
            .connectedTo("$host:$port")
            .apply {
                if (profile != "local" && profile != "test") {
                    // Configuration for Opensearch
                    this.usingSsl()
                    this.withClientConfigurer(
                        ElasticsearchClients.ElasticsearchHttpClientConfigurationCallback {
                            it.addInterceptorFirst(
                                HttpResponseInterceptor { response, _ ->
                                    response.addHeader("X-Elastic-Product", "Elasticsearch")
                                }
                            )
                            it.addInterceptorLast(
                                HttpResponseInterceptor { request, _ ->
                                    request.addHeader("Content-Type", MediaType.APPLICATION_JSON_VALUE)
                                }
                            )
                        }
                    )
                }
            }
            .withBasicAuth(userName, password)
            .withSocketTimeout(10000)
            .build()
    }
}
Editor is loading...
Leave a Comment