org.hibernate.search.elasticsearch.client.spi.ElasticsearchHttpClientConfigurer Maven / Gradle / Ivy
Show all versions of hibernate-search-elasticsearch Show documentation
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.search.elasticsearch.client.spi;
import java.util.Properties;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
/**
* An extension point allowing fine tuning of the Apache HTTP Client used by the Elasticsearch integration.
*
* This enables in particular connecting to cloud services that require a particular authentication method,
* such as request signing on Amazon Web Services.
*
* The ElasticsearchHttpClientConfigurer implementation will be given access to the HTTP client builder
* on startup.
*
* Note that you don't have to configure the client unless you have specific needs:
* the default configuration should work just fine for an on-premises Elasticsearch server.
* @author Yoann Rodiere
* @hsearch.experimental This contract is currently under active development and may be altered in any maintenance release
*/
public interface ElasticsearchHttpClientConfigurer {
/**
* Configure the HTTP Client.
*
* This method is called once for every configurer, each time an Elasticsearch client is set up.
*
* Implementors should take care of only applying configuration if relevant:
* there may be multiple, conflicting configurers in the path, so implementors should first check
* (through a configuration property) whether they are needed or not before applying any modification.
* For example an authentication configurer could decide not to do anything if no username is provided,
* or if the configuration property {@code my.configurer.enabled} is {@code false}.
*
* @param builder An Apache HTTP client builder, to set the configuration to be applied.
* @param properties The properties set for the Elasticsearch service being configured.
* Properties are masked, i.e. {@code hibernate.search.default.elasticsearch.my.property}
* will be accessed as simply {@code my.property}.
*
* @see the Apache HTTP Client documentation
*/
void configure(HttpAsyncClientBuilder builder, Properties properties);
}