HTTPedit
The HTTP layer exposes Elasticsearch’s REST 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.
When possible, consider using HTTP keep alive when connecting for better performance and try to get your favorite client not to do HTTP chunking.
HTTP settingsedit
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.
Setting | Description |
---|---|
|
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
to |
|
The max size of allowed headers. Defaults to |
|
Support for compression when possible (with
Accept-Encoding). If HTTPS is enabled, defaults to Disabling compression for HTTPS mitigates potential security risks, such as a
BREACH attack. To compress HTTPS traffic,
you must explicitly set |
|
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
|
|
Whether the |
|
Enables or disables the output of detailed error messages
and stack traces in response output. Note: When set to |
|
The maximum number of events to be queued up in memory before an 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.
REST request traceredit
The HTTP layer has a dedicated tracer logger which, when activated, logs incoming requests. The log can be dynamically activated
by setting the level of the org.elasticsearch.http.HttpTracer
logger to TRACE
:
PUT _cluster/settings { "transient" : { "logger.org.elasticsearch.http.HttpTracer" : "TRACE" } }
You can also control which uris will be traced, using a set of include and exclude wildcard patterns. By default every request will be traced.
PUT _cluster/settings { "transient" : { "http.tracer.include" : "*", "http.tracer.exclude" : "" } }