# 设置的改变

原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_settings_changes.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_settings_changes.html)

译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=4260784](http://www.apache.wiki/pages/viewpage.action?pageId=4260784)

贡献者 : [片刻](/display/~jiangzhonglian)

从Elasticsearch 5.0对所有设置进行验证，然后应用它们。节点级别和默认索引级别设置在节点启动时验证，动态集群和索引设置在更新/添加到集群状态之前进行验证。

每个设置必须是已知设置。所有设置必须已向与其一起使用的节点或传输客户端注册。这意味着定义自定义设置的插件必须在插件加载期间使用 SettingsModule#registerSettings(Setting) 方法注册其所有设置。

## 索引级别设置

在以前的版本中，Elasticsearch允许在节点级别，elasticsearch.yaml文件中或甚至通过命令行参数中将索引级别设置为默认值。从Elasticsearch 5.0只有选定的设置，例如index.codec可以在节点级别设置。所有其他设置必须在每个单独的索引上设置。要在每个索引上设置默认值，应改用索引模板。

## 节点设置

name设置已删除，并由 node.name 替换。 -Dname=some_node_name 的用法不再受支持。

node.add_id_to_custom_path已重命名为add_lock_id_to_custom_path。

node.name  设置的默认值现在是节点ID的前7个字符，后者又是随机生成的UUID。

删除设置node.mode和node.local。本地模式应通过 discovery.type: local 和 transport.type:local 配置。为了禁用http请使用 http.enabled: false

## 节点属性设置

用于分配过滤，强制意识或其他节点标识/分组的节点级属性必须以node.attr为前缀。在以前的版本中，可以使用节点指定节点属性。字首。除了node.master，node.data和node.ingest之外的所有节点属性都必须移动到新的node.attr. 命名空间。

## 节点类型设置

node.client设置已删除。具有此设置集的节点将不会启动。相反，每个节点角色需要使用现有的node.master，node.data和node.ingest支持的静态设置分别设置。

## 网关设置

已删除用于配置全局和索引状态序列化格式的gateway.format设置。默认情况下，smile用作格式。

## 传输设置

具有netty中缀的所有设置已由其现有的传输同义词替换。例如transport.netty.bind_host不再受支持，应该由替代设置transport.bind_host替换。

## 安全管理器设置

禁用安全管理器security.manager.enabled的选项已删除。为了给予elasticsearch用户特殊权限，用户必须编辑本地Java安全策略。

## 网络设置

设置的_non_loopback_值如network.host会任意选择未标记为loopback的第一个接口。而是，通过地址范围（例如_local _，_ site_指定所有环回和专用网络地址）或通过显式接口名称，主机名或地址指定。

netty.epollBug解决方法设置已删除。此设置允许人们在早期的JVM版本中启用netty工作，以获得[高CPU使用率问题](https://github.com/netty/netty/issues/327)。这个bug在[Java 7中修复](http://bugs.java.com/view_bug.do?bug_id=6403933)。由于Elasticsearch 5.0需要Java 8，所以设置被删除。请注意，如果需要重新引入解决方法，您仍然可以设置org.jboss.netty.epollBugWorkaround系统属性以直接控制Netty。

## 禁止改变线程池类型

以前，[线程池类型](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/modules-threadpool.html)可以动态调整。线程池类型有效地控制线程池的后备队列，并且修改这是专家设置，具有最小的实际益处和被滥用的高风险。更改任何线程池的线程池类型的能力已被删除。仍然可以为每个线程池调整相关的线程池参数（例如，取决于线程池类型，keep_alive，queue_size等）。

## 线程设置

建议的线程池已被删除，现在建议请求使用搜索线程池。

所有线程池设置上的前缀已从threadpool更改为thread_pool。

缩放线程池的最小大小设置已从min更改为core。

缩放线程池的最大大小设置已从大小更改为最大。

固定线程池的队列大小设置必须为queue_size（不再支持先前支持的所有其他变体）。

线程池设置现在是节点级设置。因此，不可能通过集群设置API更新线程池设置。

## 分析设置

不再支持index.analysis.analyzer.default_index分析器。如果要更改分析器以用于索引，请改为更改index.analysis.analyzer.default分析器。

## Ping设置

以前，ping超时有三个设置：discovery.zen.initial_ping_timeout，discovery.zen.ping.timeout和discovery.zen.ping_timeout。前两个已被删除，并且ping超时的唯一设置键现在是discovery.zen.ping_timeout。 ping超时的默认值保持为3秒。

已删除discovery.zen.master_election.filter_client和discovery.zen.master_election.filter_data以支持新的discovery.zen.master_election.ignore_non_master_pings。此设置控制在主选举期间如何解释ping响应，并且应谨慎使用，并且仅在极端情况下使用。有关详细信息，请参阅文档

## 恢复设置

已删除1.x中已弃用的恢复设置：

*   index.shard.recovery.translog_size由indexes.recovery.translog_size替代
*   index.shard.recovery.translog_ops被indexes.recovery.translog_ops取代
*   index.shard.recovery.file_chunk_size由indexes.recovery.file_chunk_size替代
*   index.shard.recovery.concurrent_streams被indexes.recovery.concurrent_streams取代
*   index.shard.recovery.concurrent_small_file_streams被indexes.recovery.concurrent_small_file_streams取代
*   indices.recovery.max_size_per_sec被indexes.recovery.max_bytes_per_sec所取代

如果您使用任何这些设置，请花时间审查其目的。上述所有设置都被视为专家设置，只有在绝对必要时才能使用。如果您将以上任何设置设置为永久群集设置，请使用设置更新API并相应地设置其取代的键。

以下设置已删除，无需替换

*   indices.recovery.concurrent_small_file_streams - recoveries现在是单线程的。并发传出恢复的数量通过分配决策器来节流
*   indices.recovery.concurrent_file_streams - recoveries现在是单线程的。并发传出恢复的数量通过分配决策器来节流

## Translog设置

不再支持index.translog.flush_threshold_ops设置。为了基于事务日志增长来控制刷新，请改用index.translog.flush_threshold_size。

不再支持使用index.translog.fs.type更改translog类型，缓冲实现现在是唯一可用的选项，并使用固定的8kb缓冲区。

默认情况下，translog在每个索引，创建，更新，删除或批量请求后被同步。在每个操作上fsync的能力不再需要了。事实上，它可能是一个性能瓶颈，它是trappy，因为它通过在index.translog.sync_interval设置的特殊值启用。现在，index.translog.sync_interval不接受小于100ms的值，如果启用了异步持久性，则防止fsyncing太频繁。不再支持特殊值0。

index.translog.interval已删除。

## 请求缓存设置

已弃用的设置index.cache.query.enable和indices.cache.query.size已删除，并分别替换为index.requests.cache.enable和indices.requests.cache.size。

indices.requests.cache.clean_interval已经替换为indices.cache.clean_interval，不再支持。

## 字段数据高速缓存设置

indices.fielddata.cache.clean_interval设置已替换为indices.cache.clean_interval。

## 分配设置

cluster.routing.allocation.concurrent_recoveries设置已替换为cluster.routing.allocation.node_concurrent_recoveries。

## 相似性设置

默认相似性已重命名为经典。

## 索引设置

index.memory.min_shard_index_buffer_size和indices.memory.max_shard_index_buffer_size已删除，因为Elasticsearch现在允许任何一个分片使用堆的数量，只要所有分片中使用的总索引缓冲堆低于节点的indices.memory.index_buffer_size（默认值到JVM堆的10％）。

## 删除es.max打开文件

将系统属性es.max-open-files设置为true可以使Elasticsearch打印Elasticsearch进程的最大打开文件数。此相同的信息可以从 [_Nodes Info_](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/cluster-nodes-info.html "Nodes Info") API获取，如果设置得太低，启动时会记录一个警告。

## 已删除es.netty.gathering

禁用Netty使用NIO收集可以通过将系统属性“es.netty.gathering”设置为“false”的转义填充。时间已被证明启用收集默认是一个非问题，这个非文档设置已删除。

## 已删除es.useLinkedTransferQueue

系统属性es.useLinkedTransferQueue可用于控制在集群服务中使用的队列实现以及在发现期间处理ping响应。这是未记录的设置，已被删除。

## 删除高速缓存并发级别设置

两个高速缓存并发级别设置indices.requests.cache.concurrency_level和indices.fielddata.cache.concurrency_level，因为它们不再适用于用于请求高速缓存和字段数据高速缓存的高速缓存实现。

## 使用系统属性配置Elasticsearch

不能再通过设置系统属性来配置Elasticsearch。这意味着已删除对以下所有项的支持：

*   通过命令行参数设置为elasticsearch为 -[Des.name](http://Des.name).of.setting=value.of.setting
*   通过JAVA_OPTS环境变量设置 JAVA_OPTS=$JAVA_OPTS -[Des.name](http://Des.name).of.setting=value.of.setting
*   通过ES_JAVA_OPTS环境变量设置 ES_JAVA_OPTS=$ES_JAVA_OPTS -[Des.name](http://Des.name).of.setting=value.of.setting

而应使用 -Ename.of.setting=value.of.setting 。

## 使用双划线删除配置Elasticsearch

以前可以在命令行上通过--name.of.setting value.of.setting设置设置来配置Elasticsearch。此功能已删除。而应使用 -Ename.of.setting=value.of.setting 。

## 删除对.properties配置文件的支持

Elasticsearch配置和日志记录配置不能再以Java属性文件格式（具有.properties扩展名的行分隔 键=值对）存储。

## 发现设置

必须为设置了network.host，network.bind_host，network.publish_host，transport.host，transport.bind_host或transport.publish_host配置选项的节点设置discovery.zen.minimum_master_node。我们看到那些节点处于“生产”模式，因此需要设置。

## 实时获取设置

action.get.realtime设置已删除。当未指定实时时，此设置是get和mget API的后备实时设置。现在如果不指定参数，我们总是默认为true。

## 内存锁定设置

设置bootstrap.mlockall已重命名为bootstrap.memory_lock。

## 快照设置

用于恢复快照的默认设置include_global_state已从true更改为false。它在拍摄快照时没有被更改，在这种情况下仍然默认为true。

## 时间值解析

不再支持表示星期的单位w。

不再支持小数时间值（例如0.5秒）。例如，这意味着当设置超时时，“0.5s”将被拒绝，而应输入为“500ms”。

## 节点最大本地存储节点

以前的Elasticsearch版本默认允许多个节点共享同一个数据目录（最多50个）。这可能会让用户意外启动多个节点，并且最终认为它们丢失了数据，因为第二个节点将以空数据目录开始。虽然允许多个节点的默认设置对于在笔记本电脑上形成一个小集群是友好的，并且终端用户有时在同一主机上运行多个节点，但这往往是例外。保持Elasticsearch的持续运动朝着更安全的开箱即用默认值，并优化规范而不是异常，node.max_local_storage_nodes的默认值现在是一个。

## 脚本设置

## 索引脚本设置

由于索引脚本已由存储的脚本替代，以下设置已替换为：

*   script.indexed已被script.stored替换
*   script.engine.*.indexed.aggs        已替换为script.engine.*.stored.aggs（其中*表示脚本语言，如groovy，mustache，painless等）
*   script.engine.*.indexed.mapping  已替换为script.engine.*.stored.mapping（其中*表示脚本语言，如groovy，mustache，painless等）
*   script.engine.*.indexed.search     已替换为script.engine.*.stored.search（其中*表示脚本语言，如groovy，mustache，painless等）
*   script.engine.*.indexed.update     已替换为script.engine.*.stored.update（其中*表示脚本语言，如groovy，mustache，painless等）
*   script.engine.*.indexed.plugin      已替换为script.engine.*.stored.plugin（其中*表示脚本语言，如groovy，mustache，painless等）

## 脚本模式设置

以前的脚本模式设置（例如，“script.inline：true”，“script.engine.groovy.inline.aggs：false”等）接受了大范围的“真实”或“假的”值。这现在更加严格，只支持真假选项。

## 已删除脚本沙箱设置

在5.0之前，可以为script.inline和script.stored设置（“沙盒”）指定第三个选项。这已被删除，您现在可以只设置script.line：true或script.stored：true。

## 搜索设置

设置index.query.bool.max_clause_count已删除。为了设置布尔子句的最大数量，应该使用indices.query.bool.max_clause_count。