The http module allows to expose Elasticsearch APIs over HTTP.
The http mechanism is completely asynchronous in nature, meaning that there is no blocking thread waiting for a response. The benefit of using asynchronous communication for HTTP is solving the C10k problem.
The settings in the table below can be configured for HTTP. Note that none of them are dynamically updatable so for them to take effect they should be set in the Elasticsearch configuration file.
A bind port range. Defaults to
The port that HTTP clients should use when
communicating with this node. Useful when a cluster node is behind a
proxy or firewall and the
The host address to bind the HTTP service to. Defaults to
The host address to publish for HTTP clients to connect to. Defaults to
Used to set the
The max content of an HTTP request. Defaults to
The max length of an HTTP URL. Defaults
The max size of allowed headers. Defaults to
Support for compression when possible (with
Accept-Encoding). Defaults to
Defines the compression level to use for HTTP responses. Valid values are in the range of 1 (minimum compression)
and 9 (maximum compression). Defaults to
Enable or disable cross-origin resource sharing,
i.e. whether a browser on another origin can execute requests against
Elasticsearch. Set to
Which origins to allow. Defaults to no origins
allowed. If you prepend and append a
Browsers send a "preflight" OPTIONS-request to
determine CORS settings.
Which methods to allow. Defaults to
Which headers to allow. Defaults to
Enables or disables the output of detailed error messages
and stack traces in response output. Note: When set to
Enable or disable HTTP pipelining, defaults to
The maximum number of events to be queued up in memory before a HTTP connection is closed, defaults to
The maximum number of warning headers in client HTTP responses, defaults to unbounded.
The maximum total size of warning headers in client HTTP responses, defaults to unbounded.
It also uses the common network settings.
The http module can be completely disabled and not started by setting
false. Elasticsearch nodes (and Java clients) communicate
internally using the transport interface, not HTTP. It
might make sense to disable the
http layer entirely on nodes which are not
meant to serve REST requests directly. For instance, you could disable HTTP on
data-only nodes if you also have
client nodes which are intended to serve all REST requests.
Be aware, however, that you will not be able to send any REST requests (eg to
retrieve node stats) directly to nodes which have HTTP disabled.