http.asciidoc 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. [[modules-http]]
  2. == HTTP
  3. The http module allows to expose *elasticsearch* APIs
  4. over HTTP.
  5. The http mechanism is completely asynchronous in nature, meaning that
  6. there is no blocking thread waiting for a response. The benefit of using
  7. asynchronous communication for HTTP is solving the
  8. http://en.wikipedia.org/wiki/C10k_problem[C10k problem].
  9. When possible, consider using
  10. http://en.wikipedia.org/wiki/Keepalive#HTTP_Keepalive[HTTP keep alive]
  11. when connecting for better performance and try to get your favorite
  12. client not to do
  13. http://en.wikipedia.org/wiki/Chunked_transfer_encoding[HTTP chunking].
  14. [float]
  15. === Settings
  16. The following are the settings that can be configured for HTTP:
  17. [cols="<,<",options="header",]
  18. |=======================================================================
  19. |Setting |Description
  20. |`http.port` |A bind port range. Defaults to `9200-9300`.
  21. |`http.publish_port` |The port that HTTP clients should use when
  22. communicating with this node. Useful when a cluster node is behind a
  23. proxy or firewall and the `http.port` is not directly addressable
  24. from the outside. Defaults to the actual port assigned via `http.port`.
  25. |`http.bind_host` |The host address to bind the HTTP service to. Defaults to `http.host` (if set) or `network.bind_host`.
  26. |`http.publish_host` |The host address to publish for HTTP clients to connect to. Defaults to `http.host` (if set) or `network.publish_host`.
  27. |`http.host` |Used to set the `http.bind_host` and the `http.publish_host` Defaults to `http.host` or `network.host`.
  28. |`http.max_content_length` |The max content of an HTTP request. Defaults to
  29. `100mb`. If set to greater than `Integer.MAX_VALUE`, it will be reset to 100mb.
  30. |`http.max_initial_line_length` |The max length of an HTTP URL. Defaults
  31. to `4kb`
  32. |`http.max_header_size` | The max size of allowed headers. Defaults to `8kB`
  33. |`http.compression` |Support for compression when possible (with
  34. Accept-Encoding). Defaults to `false`.
  35. |`http.compression_level` |Defines the compression level to use.
  36. Defaults to `6`.
  37. |`http.cors.enabled` |Enable or disable cross-origin resource sharing,
  38. i.e. whether a browser on another origin can do requests to
  39. Elasticsearch. Defaults to `false`.
  40. |`http.cors.allow-origin` |Which origins to allow. Defaults to no origins
  41. allowed. If you prepend and append a `/` to the value, this will
  42. be treated as a regular expression, allowing you to support HTTP and HTTPs.
  43. for example using `/https?:\/\/localhost(:[0-9]+)?/` would return the
  44. request header appropriately in both cases. `*` is a valid value but is
  45. considered a *security risk* as your elasticsearch instance is open to cross origin
  46. requests from *anywhere*.
  47. |`http.cors.max-age` |Browsers send a "preflight" OPTIONS-request to
  48. determine CORS settings. `max-age` defines how long the result should
  49. be cached for. Defaults to `1728000` (20 days)
  50. |`http.cors.allow-methods` |Which methods to allow. Defaults to
  51. `OPTIONS, HEAD, GET, POST, PUT, DELETE`.
  52. |`http.cors.allow-headers` |Which headers to allow. Defaults to
  53. `X-Requested-With, Content-Type, Content-Length`.
  54. |`http.cors.allow-credentials` | Whether the `Access-Control-Allow-Credentials`
  55. header should be returned. Note: This header is only returned, when the setting is
  56. set to `true`. Defaults to `false`
  57. |`http.detailed_errors.enabled` |Enables or disables the output of detailed error messages
  58. and stack traces in response output. Note: When set to `false` and the `error_trace` request
  59. parameter is specified, an error will be returned; when `error_trace` is not specified, a
  60. simple message will be returned. Defaults to `true`
  61. |`http.pipelining` |Enable or disable HTTP pipelining, defaults to `true`.
  62. |`http.pipelining.max_events` |The maximum number of events to be queued up in memory before a HTTP connection is closed, defaults to `10000`.
  63. |=======================================================================
  64. It also uses the common
  65. <<modules-network,network settings>>.
  66. Note that none of these settings is dynamically updatable.
  67. [float]
  68. === Disable HTTP
  69. The http module can be completely disabled and not started by setting
  70. `http.enabled` to `false`. Elasticsearch nodes (and Java clients) communicate
  71. internally using the <<modules-transport,transport interface>>, not HTTP. It
  72. might make sense to disable the `http` layer entirely on nodes which are not
  73. meant to serve REST requests directly. For instance, you could disable HTTP on
  74. <<modules-node,data-only nodes>> if you also have
  75. <<modules-node,client nodes>> which are intended to serve all REST requests.
  76. Be aware, however, that you will not be able to send any REST requests (eg to
  77. retrieve node stats) directly to nodes which have HTTP disabled.