多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 配置Elasticsearch 原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html)(修改该链接为官网对应的链接) 译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=4882615](http://www.apache.wiki/pages/viewpage.action?pageId=4882615)(修改该链接为 ApacheCN 对应的译文链接) 贡献者 : @漫步 [geekidentity](/display/~houfachao) 校对 : [misaka nagisa](/display/~wangjueyimin) Elasticsearch本身具有适宜的默认值,且需要的配置很少。 使用[Cluster Update Settings](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html)(更新群集设置)API可以更改运行中集群里的大多数设置。 配置文件应包含特定于节点的设置(例如node.name和路径)或节点为了能够加入群集而需要的设置,例如cluster.name和network.host。 ### 配置文件位置 Elasticsearch有两个配置文件: * 用于配置Elasticsearch的elasticsearch.yml; * log4j2.properties用于配置Elasticsearch日志记录。 这些文件位于config目录中,其位置默认为$ES_HOME/config/。Debian和RPM软件包将config目录位置设置为/etc/elasticsearch/。 可以使用path.conf设置更改config目录的位置,如下所示: ``` ./bin/elasticsearch -Epath.conf=/path/to/my/config/ ``` ### 配置文件格式 配置格式为[YAML](http://www.yaml.org/)。 下面是更改数据和日志的目录路径的示例: ``` path: data: /var/lib/elasticsearch logs: /var/log/elasticsearch ``` 设置也可以展平开如下: ``` path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch ``` ### 环境变量替换 配置文件中可以使用$ {...}符号引用环境变量的值,例如: ``` node.name: ${HOSTNAME} network.host: ${ES_NETWORK_HOST} ``` ### 设置的提示 对于您不希望在配置文件中存储的设置,您可以使用值${prompt.text}或${prompt.secret}并在控制台启动Elasticsearch。${prompt.secret} 禁用了echo,输入的值不会在终端显示; $ {prompt.text}将允许您在键入时看到值。例如: ``` node: name: ${prompt.text} ``` 当启动Elasticsearch时,将提示您进行输入,如下所示: ``` Enter value for [node.name]: ``` ![](https://img.kancloud.cn/50/1f/501f430e0c03baa87f0bbf9c0e08af0d_66x58.jpg)如果在设置中使用了${prompt.text}或${prompt.secret},Elasticsearch进程将不能作为服务启动或不能后台运行。 ### 设置默认设置 可以在命令行中设置新的默认设置。这将设置一个默认值,除非在配置文件中指定另一个值。 例如,如果Elasticsearch按如下方式启动: ``` ./bin/elasticsearch -Edefault.node.name=My_Node ``` node.name的值将为My_Node,但可以在命令行中使用es.node.name或在包含node.name的配置文件中覆盖。 ### 日志配置 Elasticsearch使用[Log4j 2](https://logging.apache.org/log4j/2.x/)进行日志记录。 Log4j 2可以使用log4j2.properties文件进行配置。 Elasticsearch公开了一个属性${sys:es.logs} ,可以在配置文件中引用该属性以确定日志文件的位置; 这将在运行时解析为Elasticsearch日志文件的前缀。 例如,如果您的日志目录(path.logs)是/var/log/elasticsearch并且您的集群名为production,那么$ {sys:es.logs}将解析为/var/log/elasticsearch/production。 ``` appender.rolling.type = RollingFile ① appender.rolling.name = rolling appender.rolling.fileName = ${sys:es.logs}.log ② appender.rolling.layout.type = PatternLayout appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %.10000m%n appender.rolling.filePattern = ${sys:es.logs}-%d{yyyy-MM-dd}.log ③ appender.rolling.policies.type = Policies appender.rolling.policies.time.type = TimeBasedTriggeringPolicy ④ appender.rolling.policies.time.interval = 1 ⑤ appender.rolling.policies.time.modulate = true ⑥ ``` 1. 配置RollingFile appender 2. 记录到/var/log/elasticsearch/production.log 3. 将日志记录到/var/log/elasticsearch/production-yyyy-MM-dd.log 4. 使用基于时间的滚动策略 5. 每日滚动日志 6. 在日边界对齐卷(而不是每二十四小时滚动一次) ![](https://img.kancloud.cn/50/1f/501f430e0c03baa87f0bbf9c0e08af0d_66x58.jpg)Log4j的配置解析会被任何无关的空格符所干扰;如果你复制、粘贴当前页的Log4j配置或自己输入Log4j配置时是要确认头尾的空格符号是否修正。 如果将.gz或.zip附加到appender.rolling.filePattern后,那么日志将在滚动时压缩。 如果要保留特定的时间段内的日志文件,则可以使用带有删除操作的滚动策略。 ``` appender.rolling.strategy.type = DefaultRolloverStrategy ① appender.rolling.strategy.action.type = Delete ② appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path} ③ appender.rolling.strategy.action.condition.type = IfLastModified ④ appender.rolling.strategy.action.condition.age = 7D ⑤ appender.rolling.strategy.action.PathConditions.type = IfFileName ⑥ appender.rolling.strategy.action.PathConditions.glob = ${sys:es.logs.cluster_name}-* ⑦ ``` 1. 配置DefaultRolloverStrategy(默认滚动策略) 2. 配置Delete(删除)操作处理策略 3. Elasticsearch日志路径 4. 处理策略的条件 5. 保留7日日志 6. 仅删除与指定通配符匹配的文件名或目录中超出七日以上的文件 7. 删除日志路径下与${sys:es.logs.cluster_name}-*通配符匹配的文件;但这只是仅仅删除匹配到的Elasticsearch日志,它不能同时删除deprecation logs和slow logs。 可以加载多个配置文件(在这种情况下,它们将被合并),只要它们命名为log4j2.properties并将Elasticsearch config目录作为祖先; 这对于暴露其他日志记录器的插件很有用。 日志部分包含java包及其对应的日志级别。 追加器部分包含日志的目标。 有关如何自定义日志记录和所有支持的追加器的详细信息可以在[Log4j文档](http://logging.apache.org/log4j/2.x/manual/configuration.html)中找到。 ### 弃用日志记录 除了常规日志记录之外,Elasticsearch还允许您启用已弃用操作的日志记录。 例如,这允许您早期确定,如果您需要在将来迁移某些功能。 默认情况下,将在WARN级别启用弃用日志记录,这是将发出所有弃用日志消息的级别。 ``` logger.deprecation.level = warn ``` 这将在日志目录中创建每日滚动deprecation日志文件。 定期检查此文件,特别是当您打算升级到新的主版本。 默认的日志配置已为弃用日志设置了滚动策略,以在1 GB之后滚动和压缩,并且最多保留五个日志文件(四个滚动日志和活动日志)。 您可以通过将deprecation日志级别设置为error,在config / log4j2.properties文件中禁用它。