ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# HTTP 原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-http.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-http.html) 译文链接 : [http://www.apache.wiki/display/Elasticsearch/HTTP](http://www.apache.wiki/display/Elasticsearch/HTTP) 贡献者 : [赵芳城](/display/~zhaofangcheng),[ApacheCN](/display/~apachecn),[Apache中文网](/display/~apachechina) ## HTTP   http模块允许通过http的方式暴露Elasticsearch的api,http机制本质上是完全异步的,这意味着没有阻塞线程等待响应。使用异步通信进行HTTP的好处是解决了[C10k](http://en.wikipedia.org/wiki/C10k_problem)问题。 如果可以,可考虑使用HTTP keep alive来连接以便提升性能。并且不要在客户端使用HTTP chunking ## Setting(配置)   可以为http请求做下表中的配置,但是所有的配置都不是动态加载的,必须重启elasticsearch后才能生效。配置文件为:elasticsearch.yml | 配置 | 说明 | | --- | --- | | `http.port` | 绑定端口的范围,默认9200~9300 | | `http.publish_port` | HTTP客户端在与此节点通信时应使用的端口。 集群节点位于代理或防火墙后面并且http.port不能从外部直接寻址时很有用。 默认为通过http.port分配的实际端口。 | | `http.bind_host` | 要绑定HTTP服务的主机地址,默认与http.host(如果设置)或network.bind_host配置一致。 | | `http.publish_host` | 要发送给HTTP客户端以连接的主机地址。 默认为http.host(如果设置)或network.publish_host。 | | `http.host` | 用于将http.bind_host和http.publish_host默认设置为http.host或network.host。 | | `http.max_content_length` | HTTP请求的最大内容。 默认值为100mb。 如果设置为大于Integer.MAX_VALUE,则将重置为100mb。 | | `http.max_initial_line_length` | http url最大值,默认4kb | | `http.max_header_size` | http header(请求头)的最大值,默认8kb | | `http.compression` | 设置是否压缩tcp传输时的数据,默认为true。 | | `http.compression_level` | 定义HTTP传输的压缩级别。 有效值在1(最小压缩)和9(最大压缩)的范围内。 默认为3。 | | `http.cors.enabled` | 配置是否允许跨域请求,即另一来源上的浏览器是否可以针对Elasticsearch执行请求。 设置为true以启用Elasticsearch以处理“预检”CORS请求。 如果请求中发送的Origin由http.cors.allow-origin列表允许,Elasticsearch将使用Access-Control-Allow-Origin标头响应这些请求。 设置为false(默认值)使Elasticsearch忽略Origin请求头,有效地禁用CORS请求,因为Elasticsearch永远不会使用Access-Control-Allow-Origin响应头响应。 请注意,如果客户端没有发送带有Origin标头的“预检”请求,或者它不检查来自服务器的响应报头来验证Access-Control-Allow-Origin响应报头,则跨原点安全性受到损害。 如果Elasticsearch上没有启用CORS,客户端知道的唯一方法是发送一个“预检”请求,并实现所需的响应头丢失。 | | `http.cors.allow-origin` | 定义允许哪些源请求。可以使用正则表达式,例如/https?:\/\/localhost(:[0-9]+)?/可设置支持本地HTTP和HTTPS请求。也可以设置为*,但是会存在安全隐患,因为任何来源都可访问 | | `http.cors.max-age` | 浏览器会发送一个“预检”的OPTIONS请求,来检查CORS设置。max-age定义应该缓存多长时间的结果。默认为1728000(20天) | | `http.cors.allow-methods` | 定义了允许的请求方式,默认允许OPTIONS, HEAD, GET, POST, PUT, DELETE | | `http.cors.allow-headers` | 定义了允许的请求头信息。默认允许X-Requested-With, Content-Type, Content-Length | | `http.cors.allow-credentials` | 是否返回设置的Access-Control-Allow-Credentials头信息。默认为false | | `http.detailed_errors.enabled` | 是否输出详细的错误信息和堆栈。默认为true | | `http.pipelining` | 是否启用HTTP管道支持, 默认为true | | `http.pipelining.max_events` | 在一个HTTP连接被关闭之前内存队列中允许的最大的事件数量,默认为10000 该模块也可使用一些公共的网络配置(见网络设置一节) | | `http.content_type.required` | 启用或禁用对具有内容的所有请求的Content-Type标头的严格检查和使用,默认为false。 | ## Disable HTTP(禁用HTTP)  HTTP模块可以通过将http.enable设置为false来禁用。Elasticsearch节点(和Java客户端)的内部通信使用transport接口,而非HTTP。这意味着我们可以将不接受直接REST请求的节点的HTTP禁用。比如,可以将数据节点的http禁用,创建非数据节点用来处理所有的REST请求。需要注意的是,不能向一个已经禁用了HTTP的节点直接发送任何REST请求。