ElasticSearch 配置文件
HTTP模块
官网对应链接:HTTP HTTP模块用来通过HTTP暴露Es的API。因为HTTP机制是完全异步的,这意味着等待响应时不会阻塞线程。使用异步的通信可以解决C10k的问题。 如果可以,可考虑使用HTTP keep alive来连接以便提升性能。并且不要在客户端使用HTTP chunking。
配置
下面表中是关于HTTP模块的一些配置。需要注意的是,它们都不能动态更新,必须配置在elasticsearch.yml文件中。
配置项 含义
- http.port 绑定端口的范围 默认9200-9300
- http.publish_port 客户端与节点交互时需要使用的端口。这一配置在集群节点处于防火墙后时很有用,默认和1. http.port中分配的端口一致。
- http.bind_host 绑定http服务的host地址,默认和http.host(如果设置了)或者network.bind_host一致
- http.publish_host 客户端访问的host地址,默认和http.host(如果设置了)或者network.public_host一致
- http.host 用来设置http.bind_host和http.publish_host,默认为http.host或者network.host
- http.max_content_length 设置请求内容的最大大小。默认100mb。如果设置的数值超过了Integer.MAX_VALUE,会被重置为100mb。
- http.max_initial_line_length HTTP请求URL的最大长度,默认4kb
- http.max_header_size 请求头的最大大小,默认8kb
- http.compression 是否支持压缩(使用Accept-Encoding),默认false
- http.compression_level 定义使用的压缩级别,默认为6
- http.cors.enabled 是否允许跨域请求。默认为false
- http.cors.allow-origin 定义允许哪些源请求。可以使用正则表达式,例如/https?:\/\/localhost(:[0-9]+)?/可设置支持本地HTTP和HTTPS请求。也可以设置为*,但是会存在安全隐患,因为任何来源都可访问Elasticsearch(以下简称为Es)实例。
- 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
HTTP模块可以通过将http.enable设置为false来禁用。Es节点(和Java客户端)的内部通信使用transport接口,而非HTTP。这意味着我们可以将不接受直接REST请求的节点的HTTP禁用。比如,可以将数据节点的http禁用,创建非数据节点用来处理所有的REST请求。需要注意的是,不能向一个已经禁用了HTTP的节点直接发送任何REST请求。
Local gateway模块
该模块用于存储集群信息和分片数据,以便整个集群重启后可以恢复。 以下的一些静态配置,需要在集群的每一个节点上设置,用来控制节点需要等待多长时间之后再尝试恢复存储在本地的数据。
配置项 含义
- gateway.expected_nodes 期望的集群中节点的数量,当集群中的节点数达到设定值时立即开始启动恢复本地数据的进程(会忽略recover_after_time配置),默认为0
- gateway.expected_master_nodes 期望的集群中master节点的数量,当集群中的节点数达到设定值时立即开始启动恢复本地数据的进程(会忽略recover_after_time配置),默认为0
- gateway.expected_data_nodes 期望的集群中master节点的数量,当集群中的节点数达到设定值时立即开始启动恢复本地数据的进程(会忽略recover_after_time配置),默认为0
- gateway.recover_after_time 当没有达到期望的节点数时,恢复进程会在等待配置时间之后尝试启动。当期望的节点数设置为1时,等待时间默认为5m
一旦到达了recover_after_time设置的时间,还要满足以下的配置条件,恢复进程才会启动。
配置项 含义
- gateway.recover_after_nodes 需要多少个节点加入集群
- gateway.recover_after_master_nodes 需要多少个master节点加入集群
- gateway.recover_after_data_nodes 需要多少个data节点加入集群
注意:这些配置只有在整个集群重启时才会有用。