org.hibernate.search.elasticsearch.cfg.ElasticsearchEnvironment 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.cfg;
import org.hibernate.search.elasticsearch.analyzer.definition.ElasticsearchAnalysisDefinitionProvider;
/**
* Configuration properties for Elasticsearch,
*
* @author Gunnar Morling
* @author Yoann Rodiere
* @author Guillaume Smet
*/
public final class ElasticsearchEnvironment {
/**
* Default values for the different settings if no values are given.
*/
public static final class Defaults {
public static final DynamicType DYNAMIC_MAPPING = DynamicType.STRICT;
public static final String SERVER_URI = "http://localhost:9200";
public static final int SERVER_REQUEST_TIMEOUT = 60000;
public static final int SERVER_READ_TIMEOUT = 60000;
public static final int SERVER_CONNECTION_TIMEOUT = 3000;
public static final int MAX_TOTAL_CONNECTION = 20;
public static final int MAX_TOTAL_CONNECTION_PER_ROUTE = 2;
public static final boolean DISCOVERY_ENABLED = false;
public static final int DISCOVERY_REFRESH_INTERVAL = 10;
public static final String DISCOVERY_SCHEME = "http";
public static final IndexSchemaManagementStrategy INDEX_SCHEMA_MANAGEMENT_STRATEGY = IndexSchemaManagementStrategy.CREATE;
public static final int INDEX_MANAGEMENT_WAIT_TIMEOUT = 10_000;
public static final ElasticsearchIndexStatus REQUIRED_INDEX_STATUS = ElasticsearchIndexStatus.GREEN;
public static final boolean REFRESH_AFTER_WRITE = false;
public static final int SCROLL_BACKTRACKING_WINDOW_SIZE = 10_000;
public static final int SCROLL_FETCH_SIZE = 1_000;
public static final int SCROLL_TIMEOUT = 60;
public static final boolean LOG_JSON_PRETTY_PRINTING = false;
}
/**
* Property for specifying the host names and HTTP ports of the Elasticsearch servers to connect to.
*
* URIs such as http://myeshost.com:9200 are expected, separated by whitespace characters.
*
* Defaults to {@link Defaults#SERVER_URI}.
*
* Multiple servers may be specified for load-balancing: requests will be assigned to each host in turns.
* Failover is not supported yet.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.host}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String SERVER_URI = "elasticsearch.host";
/**
* Property for specifying the path prefix prepended to the request end point.
*
* A string such as /my/path is expected.
*
* Defaults to null.
*
* The path prefix is defined globally for all the hosts if there are several of them.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.path_prefix}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String PATH_PREFIX = "elasticsearch.path_prefix";
/**
* Property for specifying the username to send when connecting to the Elasticsearch servers.
*
* A string is expected.
*
* Defaults to no username (anonymous access).
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.username}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String SERVER_USERNAME = "elasticsearch.username";
/**
* Property for specifying the password to send when connecting to the Elasticsearch servers.
*
* A string is expected.
*
* Defaults to no password at all.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.password}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String SERVER_PASSWORD = "elasticsearch.password";
/**
* Property for specifying the timeout when executing a request to an Elasticsearch server.
*
* This includes the time needed to establish a connection, send the request and receive the whole response,
* optionally re-trying multiple times in case of node failure.
*
* A numeric value in milliseconds, such as 60000 is expected.
*
* Defaults to {@link Defaults#SERVER_REQUEST_TIMEOUT}.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.request_timeout}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String SERVER_REQUEST_TIMEOUT = "elasticsearch.request_timeout";
/**
* Property for specifying the timeout when reading responses from an Elasticsearch server.
*
* A numeric value in milliseconds, such as 60000 is expected.
*
* Defaults to {@link Defaults#SERVER_READ_TIMEOUT}.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.read_timeout}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String SERVER_READ_TIMEOUT = "elasticsearch.read_timeout";
/**
* Property for specifying the timeout when connecting to an Elasticsearch server.
*
* A numeric value in milliseconds, such as 2000 is expected.
*
* Defaults to {@link Defaults#SERVER_CONNECTION_TIMEOUT}.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.connection_timeout}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String SERVER_CONNECTION_TIMEOUT = "elasticsearch.connection_timeout";
/**
* Property for specifying the maximum number of simultaneous connections to the Elasticsearch cluster.
*
* A positive numeric value is expected.
*
* Defaults to {@link Defaults#MAX_TOTAL_CONNECTION}.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.max_total_connection}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String MAX_TOTAL_CONNECTION = "elasticsearch.max_total_connection";
/**
* Property for specifying the maximum number of simultaneous connections to a single Elasticsearch server.
*
* A positive numeric value is expected.
*
* Defaults to {@link Defaults#MAX_TOTAL_CONNECTION_PER_ROUTE}.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.max_total_connection_per_route}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String MAX_TOTAL_CONNECTION_PER_ROUTE = "elasticsearch.max_total_connection_per_route";
/**
* Property for specifying whether automatic discovery of nodes in the Elasticsearch cluster is enabled.
*
* Either {@code true} or {@code false} is expected.
*
* Defaults to {@link Defaults#DISCOVERY_ENABLED}.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.discovery.enabled}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String DISCOVERY_ENABLED = "elasticsearch.discovery.enabled";
/**
* Property for specifying the time interval between two executions of the automatic discovery, if enabled.
*
* A positive numeric value in seconds is expected.
*
* Defaults to {@link Defaults#DISCOVERY_REFRESH_INTERVAL}.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.discovery.refresh_interval}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String DISCOVERY_REFRESH_INTERVAL = "elasticsearch.discovery.refresh_interval";
/**
* Property for specifying the default scheme to use when connecting to automatically discovered nodes.
*
* Either "http" or "https" is expected.
*
* Defaults to {@link Defaults#DISCOVERY_SCHEME}.
*
* To be given globally only (i.e. prefixed with {@code hibernate.search.default.}).
* Cannot be specified per index (e.g. {@code hibernate.search.myIndex.elasticsearch.discovery.default_scheme}).
* This limitation will be removed in a future version of Hibernate Search.
*/
public static final String DISCOVERY_SCHEME = "elasticsearch.discovery.default_scheme";
/**
* Property for specifying the strategy for maintaining the Elasticsearch index.
*
* The external name of one of the {@link IndexSchemaManagementStrategy} constants is expected, e.g. 'update'
* (the external names can be retrieved programmatically using {@link IndexSchemaManagementStrategy#getExternalName}).
*
* Can be given globally (e.g. {@code hibernate.search.default.elasticsearch.index_schema_management_strategy=update}) or
* for specific indexes (e.g. {@code hibernate.search.someindex.elasticsearch.index_schema_management_strategy=drop-and-create}).
*/
public static final String INDEX_SCHEMA_MANAGEMENT_STRATEGY = "elasticsearch.index_schema_management_strategy";
/**
* Property for specifying the timeout for index management operations (index creation etc.) in milli-seconds.
*
* A numeric value such as 1000 is expected.
*
* Defaults to {@link Defaults#INDEX_MANAGEMENT_WAIT_TIMEOUT} ms.
*
* Can be given globally (e.g. {@code hibernate.search.default.elasticsearch.index_management_wait_timeout=5000}) or
* for specific indexes (e.g. {@code hibernate.search.someindex.elasticsearch.index_management_wait_timeout=2000}).
*/
public static final String INDEX_MANAGEMENT_WAIT_TIMEOUT = "elasticsearch.index_management_wait_timeout";
/**
* Property for specifying the status an index must at least have in order for Hibernate Search to work with it.
*
* One of 'green', 'yellow' or 'red' is expected.
*
* Defaults to {@link Defaults#REQUIRED_INDEX_STATUS}.
*
* Can be given globally (e.g. {@code hibernate.search.default.elasticsearch.required_index_status=green}) or for
* specific indexes (e.g. {@code hibernate.search.someindex.elasticsearch.required_index_status=yellow}).
*/
public static final String REQUIRED_INDEX_STATUS = "elasticsearch.required_index_status";
/**
* Property for specifying whether an explicit index refresh should be issued after a set of operations targeting a
* given index has been executed or not.
*
* A boolean value (true, false) is expected.
*
* Defaults to {@link Defaults#REFRESH_AFTER_WRITE}.
*
* Can be given globally (e.g. {@code hibernate.search.default.elasticsearch.refresh_after_write=false}) or for
* specific indexes (e.g. {@code hibernate.search.someindex.elasticsearch.refresh_after_write=true}).
*/
public static final String REFRESH_AFTER_WRITE = "elasticsearch.refresh_after_write";
/**
* Property for specifying the the minimum number of previous results kept in memory at any time when scrolling.
*
* This determines the number of positions one will be able to scroll backward (backtracking) without
* starting over the scrolling.
*
* A strictly positive value is expected.
*
* Defaults to {@link Defaults#SCROLL_BACKTRACKING_WINDOW_SIZE}.
*
* Can only be given globally (e.g.
* {@code hibernate.search.elasticsearch.scroll_backtracking_window_size=10000}).
*/
public static final String SCROLL_BACKTRACKING_WINDOW_SIZE = "elasticsearch.scroll_backtracking_window_size";
/**
* Property for specifying the the number of results fetched by each Elasticsearch call when scrolling.
*
* A strictly positive value is expected.
*
* Defaults to {@link Defaults#SCROLL_FETCH_SIZE}.
*
* Can only be given globally (e.g.
* {@code hibernate.search.elasticsearch.scroll_fetch_size=1000}).
*/
public static final String SCROLL_FETCH_SIZE = "elasticsearch.scroll_fetch_size";
/**
* Property for specifying the maximum duration {@code ScrollableResults} will be usable if no
* other results are fetched from Elasticsearch, in seconds.
*
* A strictly positive value is expected.
*
* Defaults to {@link Defaults#SCROLL_TIMEOUT}.
*
* Can only be given globally (e.g.
* {@code hibernate.search.elasticsearch.scroll_timeout=60}).
*/
public static final String SCROLL_TIMEOUT = "elasticsearch.scroll_timeout";
/**
* Equivalent to elasticsearch "dynamic" mapping attribute, define what to do when an indexed document
* contains a field which was not declared in the index schema.
*
* Possible values are:
*
* - {@code true}: Add unknown fields to the schema dynamically
* - {@code false}: Ignore unknown fields
* - {@code strict}: Throw an exception on unknown fields
*
*
* Defaults to {@code strict}.
*
* Can be given globally (e.g. {@code hibernate.search.default.elasticsearch.dynamic_mapping=false}) or for
* specific indexes (e.g. {@code hibernate.search.someindex.elasticsearch.dynamic_mapping=true}).
*/
public static final String DYNAMIC_MAPPING = "elasticsearch.dynamic_mapping";
/**
* Provider of default analysis-related definitions for Elasticsearch.
*
* The value must be the fully-qualified name of a class implementing {@link ElasticsearchAnalysisDefinitionProvider}.
*
* Can only be given globally (e.g.
* {@code hibernate.search.elasticsearch.analysis_definition_provider=com.acme.MyClass}).
*/
public static final String ANALYSIS_DEFINITION_PROVIDER = "elasticsearch.analysis_definition_provider";
/**
* Whether JSON included in logs should be pretty-printed (indented, with line breaks).
*
* A boolean value (true, false) is expected.
*
* Defaults to {@link Defaults#LOG_JSON_PRETTY_PRINTING}.
*
* Can only be given globally (e.g.
* {@code hibernate.search.elasticsearch.log.json_pretty_printing=true}).
*/
public static final String LOG_JSON_PRETTY_PRINTING = "elasticsearch.log.json_pretty_printing";
private ElasticsearchEnvironment() {
}
}