迁移到 8.0编辑

本节讨论将应用程序迁移到 Elasticsearch 8.0 时需要注意的更改。

另请参阅 8.14 中的新增功能发行说明

重大更改编辑

Elasticsearch 8.0 中的以下更改可能会影响您的应用程序并阻止其正常运行。在升级到 8.0 之前,请查看这些更改并采取所述步骤以减轻影响。

集群和节点设置更改编辑

logo cloud 表示对 Elasticsearch Service 支持的 用户设置 的更改。

action.destructive_requires_name 现在默认为 truelogo cloud

详情
在 Elasticsearch 8.0.0 中,action.destructive_requires_name 设置的默认值从 false 更改为 true

以前,默认为 false 允许用户使用通配符模式删除、关闭或更改索引上的索引块。为了防止意外删除与通配符模式匹配的索引,我们现在默认要求破坏性操作显式命名要修改的索引。

影响
要对破坏性操作使用通配符模式,请使用 https://elastic.ac.cn/guide/en/elasticsearch/reference/8.14/cluster-update-settings.html 集群设置 API 将 action.destructive_requires_name 设置为 false。]

您不能再在非冻结节点上设置 xpack.searchable.snapshot.shared_cache.size

详情
您不能再在没有 data_frozen 节点角色的节点上设置 xpack.searchable.snapshot.shared_cache.size。此设置会为部分挂载索引的共享缓存保留磁盘空间。Elasticsearch 仅将部分挂载的索引分配给具有 data_frozen 角色的节点。

影响
从没有 data_frozen 角色的节点的 elasticsearch.yml 中删除 xpack.searchable.snapshot.shared_cache.size。在非冻结节点上指定该设置将在启动时导致错误。

indices.query.bool.max_clause_count 已弃用,并且无效。

详情
Elasticsearch 现在将动态设置查询中允许的子句的最大数量,使用基于搜索线程池大小和分配给 JVM 的堆大小的启发式算法。此限制的最小值为 1024,并且在大多数情况下会更大(例如,具有 30GB RAM 和 48 个 CPU 的节点的最大子句数约为 27,000)。更大的堆会导致更大的值,而更大的线程池会导致更小的值。

影响
应尽可能避免使用包含许多子句的查询。如果您之前为了适应繁重的查询而提高了此设置,则可能需要增加 Elasticsearch 可用的内存量,或者减小搜索线程池的大小,以便每个并发搜索可以使用更多内存。

在以前版本的 Lucene 中,您可以通过在彼此之间嵌套布尔查询来绕过此限制,但现在限制基于整个查询中叶查询的总数,并且此解决方法将不再有效。

指定 indices.query.bool.max_clause_count 将无效,但会生成弃用警告。为避免出现这些警告,请在升级或节点重新启动期间从 elasticsearch.yml 中删除该设置。

indices.lifecycle.poll_interval 必须大于 1s

详情
indices.lifecycle.poll_interval 设置得太低会导致集群负载过重。轮询间隔现在必须至少为 1s(一秒)。

影响
elasticsearch.yml 中或通过 集群更新设置 APIindices.lifecycle.poll_interval 设置为 1s 或更大。

elasticsearch.yml 中将 indices.lifecycle.poll_interval 设置为小于 1s 将导致启动时出错。集群更新设置 API 请求将 indices.lifecycle.poll_interval 设置为小于 1s 将返回错误。

文件和本机领域现在已启用,除非明确禁用。

详情
文件和本机领域现在已启用,除非明确禁用。如果明确禁用,则文件和本机领域将始终保持禁用状态。

以前,文件和本机领域具有以下隐式行为

  • 如果未配置文件和本机领域,则在配置任何其他领域时,它们将被隐式禁用。
  • 如果没有其他领域可用,因为领域未配置、许可证不允许或明确禁用,则即使明确禁用,文件和本机领域也会启用。

影响
要明确禁用文件或本机领域,请在 elasticsearch.ymlxpack.security.authc.realms 命名空间下将相应的 file.<realm-name>.enablednative.<realm-name>.enabled 设置为 false

以下配置示例禁用了本机领域和文件领域。

xpack.security.authc.realms:

  native.realm1.enabled: false
  file.realm2.enabled: false

  ...
现在需要领域 order 设置。

详情
现在需要 xpack.security.authc.realms.{type}.{name}.order 设置,并且必须为每个显式配置的领域指定该设置。每个值都必须是唯一的。

影响
如果不满足要求,集群将无法启动。

例如,以下配置无效

xpack.security.authc.realms.kerberos.kerb1:
  keytab.path: es.keytab
  remove_realm_name: false

并且必须配置为

xpack.security.authc.realms.kerberos.kerb1:
  order: 0
  keytab.path: es.keytab
  remove_realm_name: false
cluster.routing.allocation.disk.include_relocations 已被删除。

详情
Elasticsearch 现在在根据集群中节点的磁盘使用情况做出分配决策时,始终会考虑正在重新定位的分片的大小。在早期版本中,您可以通过将 cluster.routing.allocation.disk.include_relocations 设置为 false 来禁用此功能。这可能会导致分配决策不佳,从而可能超出水印并需要大量额外工作才能更正。cluster.routing.allocation.disk.include_relocations 设置已被删除。

影响
删除 cluster.routing.allocation.disk.include_relocations 设置。在 elasticsearch.yml 中指定此设置将在启动时导致错误。

cluster.join.timeout 已被删除。

详情
cluster.join.timeout 设置已被删除。加入尝试不再超时。

影响
elasticsearch.yml 中删除 cluster.join.timeout

discovery.zen 设置已被删除。

详情
discovery.zen 命名空间下的所有设置不再受支持。它们仅在 7.x 中出于 BWC 原因而存在。这包括

  • discovery.zen.minimum_master_nodes
  • discovery.zen.no_master_block
  • discovery.zen.hosts_provider
  • discovery.zen.publish_timeout
  • discovery.zen.commit_timeout
  • discovery.zen.publish_diff.enable
  • discovery.zen.ping.unicast.concurrent_connects
  • discovery.zen.ping.unicast.hosts.resolve_timeout
  • discovery.zen.ping.unicast.hosts
  • discovery.zen.ping_timeout
  • discovery.zen.unsafe_rolling_upgrades_enabled
  • discovery.zen.fd.connect_on_network_disconnect
  • discovery.zen.fd.ping_interval
  • discovery.zen.fd.ping_timeout
  • discovery.zen.fd.ping_retries
  • discovery.zen.fd.register_connection_listener
  • discovery.zen.join_retry_attempts
  • discovery.zen.join_retry_delay
  • discovery.zen.join_timeout
  • discovery.zen.max_pings_from_another_master
  • discovery.zen.send_leave_request
  • discovery.zen.master_election.wait_for_joins_timeout
  • discovery.zen.master_election.ignore_non_master_pings
  • discovery.zen.publish.max_pending_cluster_states
  • discovery.zen.bwc_ping_timeout

影响
elasticsearch.yml 中删除 discovery.zen 设置。指定这些设置将在启动时导致错误。

http.content_type.required 已被删除。

详情
http.content_type.required 设置在 Elasticsearch 6.0 中已弃用,并在 Elasticsearch 8.0 中被删除。该设置是在 Elasticsearch 5.3 中引入的,用于让用户为 Elasticsearch 6.0 做好准备,在 Elasticsearch 6.0 中,HTTP 请求的内容类型自动检测已被删除。

影响
elasticsearch.yml 中删除 http.content_type.required 设置。指定此设置将在启动时导致错误。

http.tcp_no_delay 已被删除。

详情
http.tcp_no_delay 设置在 7.x 中已弃用,并在 8.0 中被删除。请改用 http.tcp.no_delay

影响
http.tcp_no_delay 设置替换为 http.tcp.no_delay。在 elasticsearch.yml 中指定 http.tcp_no_delay 将导致启动时出错。

network.tcp.connect_timeout 已被删除。

详情
network.tcp.connect_timeout 设置在 7.x 中已弃用,并在 8.0 中被删除。此设置是 transport.connect_timeout 的回退设置。

影响
删除 network.tcp.connect_timeout 设置。使用 transport.connect_timeout 设置更改客户端连接的默认连接超时。在 elasticsearch.yml 中指定 network.tcp.connect_timeout 将导致启动时出错。

node.max_local_storage_nodes 已被删除。

详情
node.max_local_storage_nodes 设置在 7.x 中已弃用,并在 8.0 中被删除。节点应在不同的数据路径上运行,以确保每个节点始终分配给相同的数据路径。

影响
删除 node.max_local_storage_nodes 设置。在 elasticsearch.yml 中指定此设置将在启动时导致错误。

accept_default_password 设置已被删除。

详情
自 Elasticsearch 6.0 版本以来,xpack.security.authc.accept_default_password 设置已不再有效,并且不再允许使用。

影响
elasticsearch.yml 中删除 xpack.security.authc.accept_default_password 设置。指定此设置将在启动时导致错误。

roles.index.cache.* 设置已被删除。

详情
xpack.security.authz.store.roles.index.cache.max_sizexpack.security.authz.store.roles.index.cache.ttl 设置已被删除。自 Elasticsearch 5.2 版本以来,这些设置一直是多余的,并且已弃用。

影响
elasticsearch.yml 中删除 xpack.security.authz.store.roles.index.cache.max_sizexpack.security.authz.store.roles.index.cache.ttl 设置。指定这些设置将在启动时导致错误。

transport.profiles.*.xpack.security.type 设置已被删除。

详情
不再支持 transport.profiles.*.xpack.security.type 设置。传输客户端已被移除,现在所有客户端流量都使用 HTTP 传输。应移除使用此设置的传输配置文件。

影响
elasticsearch.yml 中移除 transport.profiles.*.xpack.security.type 设置。在传输配置文件中指定此设置将在启动时导致错误。

nameid_format SAML 领域设置不再具有默认值。

详情
在 SAML 中,可以将身份提供者 (IdP) 显式配置为使用特定格式发布 NameID,或者配置为尝试符合服务提供者 (SP) 的要求。SP 在 SAML 身份验证请求的 NameIDPolicy 元素中声明其要求。在 Elasticsearch 中,nameid_format SAML 领域设置控制 NameIDPolicy 值。

以前,nameid_format 的默认值为 urn:oasis:names:tc:SAML:2.0:nameid-format:transient。此设置创建的身份验证请求要求 IdP 以 transient 格式发布 NameID

默认值已被移除,这意味着 Elasticsearch 默认情况下将创建 SAML 身份验证请求,这些请求不会对 IdP 提出此要求。如果要保留以前的行为,请将 nameid_format 设置为 urn:oasis:names:tc:SAML:2.0:nameid-format:transient

影响
如果您当前未显式配置 nameid_format,则您的 IdP 可能会拒绝来自 Elasticsearch 的身份验证请求,因为这些请求未指定 NameID 格式(并且您的 IdP 配置为需要该格式)。这种不匹配会导致 SAML 配置损坏。如果您不确定您的 IdP 是否已显式配置为使用某种 NameID 格式并且您想保留当前行为,请尝试将 nameid_format 显式设置为 urn:oasis:names:tc:SAML:2.0:nameid-format:transient

现在需要 xpack.security.transport.ssl.enabled 设置来配置 xpack.security.transport.ssl 设置。

详情
现在,如果在没有配置 xpack.security.transport.ssl.enabled 的情况下为 xpack.security.transport.ssl 配置任何 SSL 设置,则会出现错误。

影响
如果使用其他 xpack.security.transport.ssl 设置,则必须显式指定 xpack.security.transport.ssl.enabled 设置。

如果您不想启用 SSL 并且当前正在使用其他 xpack.security.transport.ssl 设置,请执行以下操作之一

  • xpack.security.transport.ssl.enabled 显式指定为 false
  • 停止使用其他 xpack.security.transport.ssl 设置

如果要启用 SSL,请按照在集群中的节点之间加密通信中的说明进行操作。作为此配置的一部分,请将 xpack.security.transport.ssl.enabled 显式指定为 true

例如,以下配置无效

xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

并且必须配置为

xpack.security.transport.ssl.enabled: true 
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

false

现在需要 xpack.security.http.ssl.enabled 设置来配置 xpack.security.http.ssl 设置。

详情
现在,如果在没有配置 xpack.security.http.ssl.enabled 的情况下为 xpack.security.http.ssl 配置任何 SSL 设置,则会出现错误。

影响
如果使用其他 xpack.security.http.ssl 设置,则必须显式指定 xpack.security.http.ssl.enabled 设置。

如果您不想启用 SSL 并且当前正在使用其他 xpack.security.http.ssl 设置,请执行以下操作之一

  • xpack.security.http.ssl.enabled 显式指定为 false
  • 停止使用其他 xpack.security.http.ssl 设置

如果要启用 SSL,请按照加密 HTTP 客户端通信中的说明进行操作。作为此配置的一部分,请将 xpack.security.http.ssl.enabled 显式指定为 true

例如,以下配置无效

xpack.security.http.ssl.certificate: elasticsearch.crt
xpack.security.http.ssl.key: elasticsearch.key
xpack.security.http.ssl.certificate_authorities: [ "corporate-ca.crt" ]

并且必须配置为以下任一项

xpack.security.http.ssl.enabled: true 
xpack.security.http.ssl.certificate: elasticsearch.crt
xpack.security.http.ssl.key: elasticsearch.key
xpack.security.http.ssl.certificate_authorities: [ "corporate-ca.crt" ]

false

现在需要 xpack.security.transport.ssl 证书和密钥才能为传输接口启用 SSL。

详情
现在,如果在没有通过使用 xpack.security.transport.ssl.keystore.path 设置或 xpack.security.transport.ssl.certificatexpack.security.transport.ssl.key 设置配置证书和密钥的情况下为传输接口启用 SSL,则会出现错误。

影响
如果 xpack.security.transport.ssl.enabled 设置为 true,请使用 xpack.security.transport.ssl.keystore.path 设置或 xpack.security.transport.ssl.certificatexpack.security.transport.ssl.key 设置提供证书和密钥。如果未提供证书和密钥,Elasticsearch 将在启动时返回错误。

现在需要 xpack.security.http.ssl 证书和密钥才能为 HTTP 服务器启用 SSL。

详情
现在,如果在没有通过使用 xpack.security.http.ssl.keystore.path 设置或 xpack.security.http.ssl.certificatexpack.security.http.ssl.key 设置配置证书和密钥的情况下为 HTTP(Rest)服务器启用 SSL,则会出现错误。

影响
如果 xpack.security.http.ssl.enabled 设置为 true,请使用 xpack.security.http.ssl.keystore.path 设置或 xpack.security.http.ssl.certificatexpack.security.http.ssl.key 设置提供证书和密钥。如果未提供证书和密钥,Elasticsearch 将在启动时返回错误。

无法在 elasticsearch.yml 中配置 PKCS#11 密钥库和信任库

详情
设置 *.ssl.keystore.type*.ssl.truststore.type 不再接受“PKCS11”作为有效类型。这适用于 Elasticsearch 中的所有 SSL 设置,包括

  • xpack.security.http.keystore.type
  • xpack.security.transport.keystore.type
  • xpack.security.http.truststore.type
  • xpack.security.transport.truststore.type

以及安全领域、watcher 和监控的 SSL 设置。

将 PKCS#11 密钥库或信任库用作 JRE 的默认存储不受影响。

影响
如果您的 elasticsearch.yml 文件中配置了 PKCS#11 密钥库,则必须移除该配置并切换到受支持的密钥库类型,或者将您的 PKCS#11 密钥库配置为 JRE 默认存储。

kibana 用户已被 kibana_system 替换。

详情
kibana 用户过去用于向 Elasticsearch 验证 Kibana 的身份。该用户的名称令人困惑,并且经常被错误地用于登录 Kibana。为了减少混淆并更好地与其他内置系统帐户保持一致,该名称已重命名为 kibana_system

影响
将所有使用 kibana 用户的地方替换为 kibana_system 用户。在 kibana.yml 中指定 kibana 用户将在启动时导致错误。

如果您的 kibana.yml 以前包含

elasticsearch.username: kibana

那么您应该更新为使用新的 kibana_system 用户

elasticsearch.username: kibana_system

新的 kibana_system 用户不会保留以前的 kibana 用户密码。您必须为 kibana_system 用户显式设置密码。

search.remote.* 设置已被移除。

详情
在 6.5 版本中,这些设置已弃用,取而代之的是 cluster.remote。在 7.x 版本中,我们提供了将这些设置自动升级到其 cluster.remote 对应设置的功能。在 8.0.0 版本中,这些设置已被移除。如果您在配置或集群状态中包含这些设置,Elasticsearch 将拒绝启动。

影响
使用替代的 cluster.remote 设置。停止使用 search.remote.* 设置。在 elasticsearch.yml 中指定这些设置将在启动时导致错误。

pidfile 设置已被 node.pidfile 替换。

详情
为了确保所有设置都在正确的命名空间中,pidfile 设置在 Elasticsearch 7.4.0 版本中已弃用,并在 8.0.0 版本中移除。请改用 node.pidfile

影响
使用 node.pidfile 设置。停止使用 pidfile 设置。在 elasticsearch.yml 中指定 pidfile 设置将在启动时导致错误。

processors 设置已被 node.processors 替换。

详情
为了确保所有设置都在正确的命名空间中,processors 设置在 Elasticsearch 7.4.0 版本中已弃用,并在 8.0.0 版本中移除。请改用 node.processors

影响
使用 node.processors 设置。停止使用 processors 设置。在 elasticsearch.yml 中指定 processors 设置将在启动时导致错误。

node.processors 设置不能再超过可用的处理器数量。

详情
以前,可以将用于设置线程池默认大小的处理器数量设置为大于可用处理器数量的值。由于这会导致更多的上下文切换和更多的线程,但不会增加可用于调度这些额外线程的物理 CPU 数量,因此 node.processors 设置现在受可用处理器数量的限制。

影响
如果指定,请确保 node.processors 设置的值不超过可用处理器数量。在 elasticsearch.yml 中将 node.processors 值设置为大于可用处理器数量的值将在启动时导致错误。

cluster.remote.connect 设置已被移除。

详情
在 Elasticsearch 7.7.0 中,设置 cluster.remote.connect 已弃用,取而代之的是设置 node.remote_cluster_client。在 Elasticsearch 8.0.0 中,设置 cluster.remote.connect 已移除。

影响
使用 node.remote_cluster_client 设置。停止使用 cluster.remote.connect 设置。在 elasticsearch.yml 中指定 cluster.remote.connect 设置将在启动时导致错误。

node.local_storage 设置已被移除。

详情
在 Elasticsearch 7.8.0 中,设置 node.local_storage 已弃用,并且从 Elasticsearch 8.0.0 开始,所有节点都需要本地存储。因此,node.local_storage 设置已被移除。

影响
停止使用 node.local_storage 设置。在 elasticsearch.yml 中指定此设置将在启动时导致错误。

用于 HTTP 监控的 auth.password 设置已被移除。

详情
在 Elasticsearch 7.7.0 中,设置 xpack.monitoring.exporters.<exporterName>.auth.password 已弃用,取而代之的是设置 xpack.monitoring.exporters.<exporterName>.auth.secure_password。在 Elasticsearch 8.0.0 中,设置 xpack.monitoring.exporters.<exporterName>.auth.password 已移除。

影响
使用 xpack.monitoring.exporters.<exporterName>.auth.secure_password 设置。停止使用 xpack.monitoring.exporters.<exporterName>.auth.password 设置。在 elasticsearch.yml 中指定 xpack.monitoring.exporters.<exporterName>.auth.password 设置将在启动时导致错误。

用于禁用基本许可证功能的设置已被移除。

详情
以下设置在 Elasticsearch 7.8.0 中已弃用,并在 Elasticsearch 8.0.0 中移除

  • xpack.enrich.enabled
  • xpack.flattened.enabled
  • xpack.ilm.enabled
  • xpack.monitoring.enabled
  • xpack.rollup.enabled
  • xpack.slm.enabled
  • xpack.sql.enabled
  • xpack.transform.enabled
  • xpack.vectors.enabled

这些基本许可证功能现在始终启用。

如果您已禁用 ILM 以便可以使用其他工具来管理 Watcher 索引,则新引入的 xpack.watcher.use_ilm_index_management 设置可以设置为 false。

影响
停止使用已移除的设置。在 elasticsearch.yml 中指定这些设置将在启动时导致错误。

用于在一定数量的主节点启动之前延迟集群恢复的设置已被移除。

详情
以下集群设置已被移除

  • gateway.expected_nodes
  • gateway.expected_master_nodes
  • gateway.recover_after_nodes
  • gateway.recover_after_master_nodes

一旦大多数符合主节点条件的节点已加入,就可以安全地恢复集群,因此等待任何其他符合主节点条件的节点启动没有任何好处。

影响
停止使用已移除的设置。如果需要,请使用 gateway.expected_data_nodesgateway.recover_after_data_nodes 在一定数量的数据节点启动之前延迟集群恢复。

旧版角色设置已被移除。

详情
旧版角色设置

  • node.data
  • node.ingest
  • node.master
  • node.ml
  • node.remote_cluster_client
  • node.transform
  • node.voting_only

已被移除。请改用 node.roles 设置。如果您之前在 7.13 或更高版本的集群上使用旧版角色设置,则每个节点上都会显示一条弃用日志消息,指示 node.roles 的确切替换值。

影响
停止使用已移除的设置。在 elasticsearch.yml 中指定这些设置将在启动时导致错误。

系统调用过滤器设置已被移除。

详情
Elasticsearch 使用系统调用过滤器来移除其分叉另一个进程的能力。这对于缓解远程代码攻击非常有用。默认情况下启用这些系统调用过滤器,之前通过 bootstrap.system_call_filter 设置进行控制。从 Elasticsearch 8.0 开始,将需要系统调用过滤器。因此,bootstrap.system_call_filter 设置在 Elasticsearch 7.13.0 中已弃用,并在 Elasticsearch 8.0.0 中移除。

影响
停止使用已移除的设置。在 Elasticsearch 配置中指定此设置将在启动时导致错误。

层级过滤设置已被移除。

详情
._tier 结尾的集群和索引级别设置用于过滤将分片分配给特定节点集,这些设置已被移除。应该使用 层级偏好设置,即 index.routing.allocation.include._tier_preference。已移除的设置如下

集群级别设置

  • cluster.routing.allocation.include._tier
  • cluster.routing.allocation.exclude._tier
  • cluster.routing.allocation.require._tier

索引设置

  • index.routing.allocation.include._tier
  • index.routing.allocation.exclude._tier
  • index.routing.allocation.require._tier

影响
停止使用已移除的设置。在 Elasticsearch 配置中指定任何这些集群设置将在启动时导致错误。使用这些设置的任何索引在加载索引元数据时,这些设置都将被存档(并且不会生效)。

共享数据路径和每个索引数据路径设置已弃用。

详情
Elasticsearch 使用共享数据路径作为每个索引数据路径的基本路径。此功能以前与共享副本一起使用。从 7.13.0 开始,这些设置已弃用。从 8.0 开始,只有在 7.x 中创建的现有索引才能使用共享数据路径和每个索引数据路径设置。

影响
停止使用已弃用的设置。

单个数据节点水印设置已弃用,现在仅接受 true

详情
在 7.14 中,将 cluster.routing.allocation.disk.watermark.enable_for_single_data_node 设置为 false 已弃用。从 8.0 开始,唯一合法的值将是 true。在未来的版本中,该设置将被完全移除,其行为与将该设置设置为 true 时相同。

如果希望对单个数据节点集群使用旧行为,则可以通过设置 cluster.routing.allocation.disk.threshold_enabled: false 来禁用基于磁盘的分配。

影响
停止使用已弃用的设置。

gateway.auto_import_dangling_indices 设置已被移除。

详情
gateway.auto_import_dangling_indices 集群设置已被移除。以前,您可以使用此设置自动导入 孤立索引。但是,自动导入孤立索引是不安全的。请使用 孤立索引 API 来管理和导入孤立索引。

影响
停止使用已移除的设置。在 elasticsearch.yml 中指定该设置将在启动时导致错误。

listener 线程池已被移除。

详情
以前,传输客户端使用线程池来确保不在网络线程上回调侦听器。传输客户端已在 8.0 中移除,不再需要线程池。

影响
从任何节点的 elasticsearch.yml 中移除 listener 线程池设置。在 elasticsearch.yml 中指定 listener 线程池设置将在启动时导致错误。

fixed_auto_queue_size 线程池类型已被移除。

详情
之前标记为实验性功能的 fixed_auto_queue_size 线程池类型已在 7.x 中弃用,并在 8.0 中移除。searchsearch_throttled 线程池现在具有 fixed 类型。

影响
无需采取任何措施。

多个 transport 设置已被替换。

详情
以下设置已在 7.x 中弃用,并在 8.0 中移除。每个设置都有一个在 6.7 中引入的替换设置。

  • transport.tcp.port 已替换为 transport.port
  • transport.tcp.compress 已替换为 transport.compress
  • transport.tcp.connect_timeout 已替换为 transport.connect_timeout
  • transport.tcp_no_delay 已替换为 transport.tcp.no_delay
  • transport.profiles.profile_name.tcp_no_delay 已替换为 transport.profiles.profile_name.tcp.no_delay
  • transport.profiles.profile_name.tcp_keep_alive 已替换为 transport.profiles.profile_name.tcp.keep_alive
  • transport.profiles.profile_name.reuse_address 已替换为 transport.profiles.profile_name.tcp.reuse_address
  • transport.profiles.profile_name.send_buffer_size 已替换为 transport.profiles.profile_name.tcp.send_buffer_size
  • transport.profiles.profile_name.receive_buffer_size 已替换为 transport.profiles.profile_name.tcp.receive_buffer_size

影响
使用替换设置。停止使用已移除的设置。在 elasticsearch.yml 中指定已移除的设置将在启动时导致错误。

默认情况下已启用选择性传输压缩。

详情
在 8.0 之前,默认情况下禁用传输压缩。从 8.0 开始,transport.compress 默认为 indexing_data。此配置意味着原始索引数据的传播将在节点之间进行压缩。

影响
节点间传输将在索引路径上减少。在某些情况下,CPU 使用率可能会增加。

传输压缩默认为 lz4。

详情
在 8.0 之前,transport.compression_scheme 设置默认为 deflate。从 8.0 开始,transport.compress_scheme 默认为 lz4

在 8.0 之前,当显式配置 cluster.remote.<cluster_alias>.transport.compress 时,cluster.remote.<cluster_alias>.transport.compression_scheme 设置默认为 deflate。从 8.0 开始,cluster.remote.<cluster_alias>.transport.compression_scheme 默认情况下将回退到 transport.compression_scheme

影响
此配置意味着传输压缩将产生稍低的压缩率,以换取较低的 CPU 负载。

节点级别设置 repositories.fs.compress 已被移除。

详情
对于共享文件系统存储库("type": "fs"),节点级别设置 repositories.fs.compress 以前可用于为未指定 compress 的所有共享文件系统存储库启用压缩。repositories.fs.compress 设置已被移除。

影响
停止使用节点级别设置 repositories.fs.compress。请改用存储库特定的 compress 设置来启用压缩。请参阅 共享文件系统存储库设置

启用 FIPS 模式后,默认密码哈希现在为 PBKDF2_STRETCH

详情
如果 xpack.security.fips_mode.enabled 为 true(请参阅 FIPS 140-2),则 xpack.security.authc.password_hashing.algorithm 的值现在默认为 pbkdf2_stretch

在早期版本中,此设置始终默认为 bcrypt,并且运行时检查会阻止节点启动,除非该值显式设置为“pbkdf2”变体。

对于未启用 FIPS 140 模式的集群,没有任何更改。

影响
此更改不会对升级后的节点产生任何影响。任何为密码哈希算法显式配置了值的节点都将继续使用该配置值。任何在 Elasticsearch 6.x 或 Elasticsearch 7.x 中没有为密码哈希算法显式配置值的节点都将无法启动。

xpack.monitoring.history.duration 不会删除由 metricbeat 或 elastic 代理创建的索引

详情

在 8.0 之前,Elasticsearch 会根据 xpack.monitoring.history.duration 设置在内部处理所有监控索引的移除。

使用 metricbeat 或 elastic 代理 >= 8.0 收集监控数据时,索引将通过 ILM 策略进行管理。如果存在该设置,则将使用 xpack.monitoring.history.duration 作为初始保留期创建策略。

如果需要自定义使用 metricbeat 收集的监控数据的保留设置,请直接更新 .monitoring-8-ilm-policy ILM 策略。

xpack.monitoring.history.duration 设置仅适用于使用(旧版)内部收集写入的监控索引,不适用于由 metricbeat 或代理创建的索引。

影响
升级后,请确保 .monitoring-8-ilm-policy ILM 策略与您所需的保留设置一致。

如果您仅使用 metricbeat 或代理来收集监控数据,则还可以移除任何自定义的 xpack.monitoring.history.duration 设置。

命令行工具更改编辑

如果您使用 Elasticsearch Service,请跳过此部分。Elasticsearch Service 会为您处理这些更改。

elasticsearch-migrate 工具已被移除。

详情
elasticsearch-migrate 工具提供了一种将文件领域用户和角色转换为本机领域的方法。自 Elasticsearch 7.2.0 起,它已被弃用。现在应该直接在本机领域中创建用户和角色。

影响
停止使用 elasticsearch-migrate 工具。尝试使用 elasticsearch-migrate 工具将导致错误。

索引设置更改编辑

直接访问系统索引已被弃用。

详情
直接访问系统索引已被弃用,并且可能会在未来版本中被阻止。如果您必须访问系统索引,请创建一个具有针对特定索引的索引权限的安全角色,并将 allow_restricted_indices 权限设置为 true。有关将此权限添加到索引权限的信息,请参阅索引权限

影响
直接访问系统索引会导致 API 响应标头中出现警告。如果可用,请使用 Kibana 或相关功能的 Elasticsearch API 来管理您要访问的数据。

index.merge.policy.max_merge_at_once_explicit 已弃用,并且无效。

详情
索引设置 index.merge.policy.max_merge_at_once_explicit 已弃用,并且无效。

以前,您可以指定 index.merge.policy.max_merge_at_once_explicit 来设置在强制合并或清除已删除文档期间同时合并的最大段数。在 8.0 中,此数字不受限制,无论设置如何。

影响
指定 index.merge.policy.max_merge_at_once_explicit 将无效,但会生成弃用警告。

为避免这些弃用警告,请停止使用该设置。创建新索引时不要指定该设置,并从索引和组件模板中删除该设置。

要从现有数据流或索引中删除该设置,请使用更新索引设置 API 将该设置的值指定为 null

response = client.indices.put_settings(
  index: 'my-index-000001',
  body: {
    'index.merge.policy.max_merge_at_once_explicit' => nil
  }
)
puts response
PUT my-index-000001/_settings
{
  "index.merge.policy.max_merge_at_once_explicit": null
}
已删除 index.max_adjacency_matrix_filters 索引设置。

详情
已删除 index.max_adjacency_matrix_filters 索引设置。以前,您可以使用此设置来配置邻接矩阵聚合的最大过滤器数。现在,indices.query.bool.max_clause_count 索引设置确定聚合的最大过滤器数。

影响
停止使用 index.max_adjacency_matrix_filters 索引设置。

包含该索引设置的请求将返回错误。如果您升级的集群包含已存在该设置的 7.x 索引,则 Elasticsearch 将归档该设置

从索引和组件模板中删除索引设置。尝试使用包含该设置的模板将失败并返回错误。这包括自动操作,例如 ILM 翻滚操作。

已删除 index.force_memory_term_dictionary 设置。

详情
index.force_memory_term_dictionary 设置是在 7.0 中引入的,作为一种临时措施,允许用户选择退出在适当时将术语字典保留在磁盘上的优化。此优化现在是强制性的,并且该设置已删除。

影响
停止使用 index.force_memory_term_dictionary 索引设置。包含此设置的请求将返回错误。

已删除 index.soft_deletes.enabled 设置。

详情
在 7.6 中已弃用创建禁用软删除的索引,并且在 8.0 中不再支持。 index.soft_deletes.enabled 设置不能再设置为 false

影响
停止使用 index.soft_deletes.enabled 索引设置。将 index.soft_deletes.enabled 设置为 false 的请求将返回错误。

已删除 index.translog.retention.ageindex.translog.retention.size 设置。

详情
事务日志保留设置 index.translog.retention.ageindex.translog.retention.size 在 7.4 中实际上被忽略,在 7.7 中被弃用,并在 8.0 中被删除,转而支持软删除

影响
停止使用 index.translog.retention.ageindex.translog.retention.size 索引设置。包含这些设置的请求将返回错误。

Java API 更改编辑

在 Java 高级 REST 客户端中,indexlifecycle 包已重命名为 ilm

详情
在高级 REST 客户端中,indexlifecycle 包已重命名为 ilm,以匹配 Elasticsearch 代码中的包重命名。

影响
更新您的工作流和应用程序以使用 ilm 包来代替 indexlifecycle

Fuzziness 的更改。

详情
要创建 Fuzziness 实例,请使用 fromStringfromEdits 方法,而不是过去接受字符串和数值的 build 方法。查询构建器上的多个模糊性设置器(例如 MatchQueryBuilder#fuzziness)现在只接受 Fuzziness 实例,而不是对象。

Fuzziness 过去在解析任意数值时比较宽松,会静默地将它们截断为三个允许的编辑距离之一:0、1 或 2。现在,这种宽松性已被删除,并且在尝试使用其他值(例如,过去接受但截断为 1 的浮点数,如 1.3)构造实例时,该类将抛出错误。

影响
使用可用的常量(例如,Fuzziness.ONEFuzziness.AUTO)或使用上述工厂方法构建您自己的实例。仅使用允许的 Fuzziness 值。

Repository 的更改。

详情
Repository 不再依赖于 IndexShard。restoreShard 和 snapshotShard 的契约已缩减为 Store 和 MappingService,以提高可测试性。

影响
无需采取任何措施。

JVM 选项更改编辑

如果您使用 Elasticsearch Service,请跳过此部分。Elasticsearch Service 会为您处理这些更改。

已删除 es.disk.auto_release_flood_stage_block

详情
如果节点超过了 flood-stage 磁盘水印,则我们会向其所有索引添加一个块以防止进一步写入,作为防止节点完全耗尽其磁盘空间的最后尝试。默认情况下,从 7.4 开始,当节点再次低于高水印时,该块会自动删除,但可以通过将系统属性 es.disk.auto_release_flood_stage_block 设置为 false 来禁用此行为。此行为不再是可选的,并且现在不得设置此系统属性。

影响
停止使用 es.disk.auto_release_flood_stage_block 系统属性。设置此系统属性将在启动时导致错误。

已删除 es.rest.url_plus_as_space

详情
从 7.4 版本开始,URL 中的 + 将被所有 REST API 功能编码为 %2B。以前的版本将 + 视为单个空格。在这些以前的版本中,如果您的应用程序需要将 + 作为单个空格处理,则可以通过将系统属性 es.rest.url_plus_as_space 设置为 true 来恢复到旧行为。请注意,此行为已弃用,并且在版本 8 中将不再支持将此系统属性设置为 true

影响
更新您的应用程序或工作流,以假定 URL 中的 + 被编码为 %2B

已删除 es.unsafely_permit_handshake_from_incompatible_builds

详情
Elasticsearch 有一项检查,用于验证相同版本的通信节点对是否运行完全相同的构建,因此彼此使用相同的线路格式。在以前的版本中,可以通过将系统属性 es.unsafely_permit_handshake_from_incompatible_builds 设置为 true 来绕过此检查。现在禁止使用此系统属性。

影响
停止使用 es.unsafely_permit_handshake_from_incompatible_builds 系统属性,并确保相同版本的所有节点都运行完全相同的构建。设置此系统属性将在启动时导致错误。

日志记录更改编辑

Elasticsearch JSON 日志现在符合 ECS。

详情
Elasticsearch 的JSON 日志现在符合Elastic 通用模式 (ECS)。以前,Elasticsearch 的 JSON 日志使用自定义模式。

影响
如果您的应用程序解析 Elasticsearch 的 JSON 日志,请更新它以支持新的 ECS 格式。

Elasticsearch 不再以纯文本格式发出弃用日志或慢日志。

详情
Elasticsearch 不再发出以下日志的纯文本版本

  • 弃用日志
  • 索引慢日志
  • 搜索慢日志

这些日志现在仅以 JSON 格式提供。

服务器日志仍然以 JSON 和纯文本格式提供。

影响
如果您的应用程序解析 Elasticsearch 的纯文本日志,请更新它以使用新的 ECS JSON 日志。

审核日志按大小滚动和归档。

详情
除了现有的每日滚动外,安全审核日志现在还按磁盘大小限制滚动。此外,滚动日志也经过 gzip 压缩。

影响
滚动审核日志文件的名称(但不是当前日志的名称)已更改。如果您已设置自动工具来使用这些文件,则必须将它们配置为使用新名称,并可能考虑使用 gzip 存档而不是纯文本。Elasticsearch 的 Docker 构建不受影响,因为它记录在 stdout 上,而不会执行滚动。

映射更改编辑

不支持在 Elasticsearch 6.x 及更早版本中创建的索引。

详情
Elasticsearch 8.0 可以读取在 7.0 或更高版本中创建的索引。如果存在在 7.0 之前的 Elasticsearch 版本中创建的索引,则 Elasticsearch 8.0 节点将不会启动。

影响
如果需要将 Elasticsearch 6.x 或更早版本中创建的索引带入 Elasticsearch 8.x,请使用 Elasticsearch 7.x 对其进行重建。

不支持在 Elasticsearch 6.x 及更早版本中创建的已关闭索引。

详情
在早期版本中,即使节点包含在先前主要版本之前的版本中创建的索引的数据,只要这些索引已关闭,该节点也会启动。Elasticsearch 现在确保它在启动时与每个索引(打开或关闭)兼容。

影响
如果需要将 Elasticsearch 6.x 或更早版本中创建的已关闭索引带入 Elasticsearch 8.x,请使用 Elasticsearch 7.x 对其进行重建。

每个字段的最大完成上下文数现在为 10。

详情
单个完成字段中的完成上下文数已限制为 10。

影响
在完成字段中最多使用 10 个完成上下文。指定超过 10 个完成上下文将返回错误。

不再支持多字段中的多字段。

详情
以前,可以在多字段中定义多字段。在 7.3 中已弃用定义链式多字段,现在不再支持。

影响
要迁移映射,应删除 fields 块中出现的所有 fields 实例,方法是将链式 fields 块展平为单级,或者在适当时切换到 copy_to

已删除 _field_names 元数据字段的 enabled 参数。

详情
该设置已在 7.5 中弃用,并且在新索引上不再支持。旧索引的映射将继续工作,但会发出弃用警告。

影响
应从模板和映射中删除 _field_namesenabled 设置。不再需要禁用 _field_names,因为它不再占用大量的索引开销。

字段映射中的 boost 参数已被移除。

详情
索引时间提升自 5.x 系列以来已被弃用,但仍然可以在映射中声明特定于字段的提升。现在已将其完全移除。在 7.x 中构建的包含映射提升的索引将发出警告,并且提升在 8.0 中将不起作用。新索引根本不允许在其映射中设置提升。

影响
应从模板和映射中移除 boost 设置。请直接在查询中使用提升。

Java 时间日期格式取代了 joda 时间格式。

详情
在 7.0 中,Elasticsearch 从 joda 时间切换到 java 时间,用于与日期相关的解析、格式化和计算。在 7.0 及更高版本中创建的索引已经需要使用具有 java 时间日期格式的映射。但是,使用 joda 时间格式的早期索引必须重新索引以使用具有 java 时间格式的映射。

影响
有关详细的迁移指南,请参阅Java 时间迁移指南

已移除多个 geo_shape 映射参数。

详情
以下 geo_shape 映射参数已在 6.6 中弃用

  • tree
  • tree_levels
  • strategy
  • distance_error_pct

这些参数已在 8.0.0 中移除。

影响
在 8.0 中,您不能再创建包含这些参数的映射。但是,使用这些映射参数的 7.x 索引将继续工作。

sparse_vector 字段数据类型已被移除。

详情
sparse_vector 字段类型已在 7.6 中弃用,现在在 8.0 中已移除。我们没有看到对这种实验性字段类型的太多兴趣,并且在当前的设计中没有看到明确的用例。如果您对稀疏向量功能有任何反馈或建议,请通过 GitHub 或*讨论*论坛告诉我们。

影响
停止使用 sparse_vector 字段数据类型。包含此字段数据类型映射的请求将返回错误。

打包更改编辑

如果您使用 Elasticsearch Service,请跳过此部分。Elasticsearch Service 会为您处理这些更改。

数据文件夹的布局已更改。

详情
每个节点的数据现在直接存储在 path.data 设置设置的数据目录中,而不是存储在 ${path.data}/nodes/0 中,因为移除了 node.max_local_storage_nodes 设置意味着节点可能不再共享数据路径。

影响
启动时,Elasticsearch 会自动将数据路径迁移到新布局。如果数据路径包含多个节点的数据,则此自动迁移将不会进行。在升级之前,您应该迁移到每个节点都有自己的数据路径的配置。

如果您尝试升级数据路径中有多个节点的数据的配置,则自动迁移将失败,并且 Elasticsearch 将拒绝启动。要解决此问题,您需要手动执行迁移。额外节点的数据存储在名为 ${path.data}/nodes/1${path.data}/nodes/2 等的文件夹中,您应该将这些文件夹中的每一个都移动到适当的位置,然后将相应的节点配置为将其用于其数据路径。如果您的节点在 path.data 设置中每个都有多个数据路径,则您应该并行移动所有相应的子文件夹。每个节点在其所有数据路径中使用相同的子文件夹(例如 nodes/2)。

默认的 Maxmind geoip 数据库已被移除。

详情
默认情况下随 Elasticsearch 提供的默认 Maxmind geoip 数据库已被移除。这些数据库已过时且陈旧,使用这些数据库可能会导致不正确的 geoip 查找。

默认情况下,自 7.13 起,如果在配置目录中未指定数据库或在 geoip 下载器下载 geoip 数据库之前,则会使用这些预打包的 geoip 数据库。当 geoip 数据库下载器完成下载新数据库后,将不再使用这些预打包的数据库。

影响
如果禁用了 geoip 下载器并且在每个摄取节点的配置目录中未提供 geoip 数据库,则 geoip 处理器将不再执行 geoip 查找,并使用请求的数据库不再可用的事实标记这些文档。

在集群启动后以及 geoip 下载器完成下载最新数据库之前,geoip 处理器将不执行任何 geoip 查找,并标记请求的数据库不可用的文档。在 geoip 下载器完成下载最新数据库后,geoip 处理器将正常运行。集群启动后 geoip 处理器无法执行 geoip 查找的时间窗口应该非常小。

无痛更改编辑

JodaCompatibleZonedDateTime 类已被移除。

详情
作为从 Joda 日期时间到 Java 日期时间的过渡,脚本使用了一个名为 JodaCompatibleZonedDateTime 的中间类。此类已被移除,并替换为 ZonedDateTime。在脚本中使用强制转换为 JodaCompatibleZonedDateTime 或使用仅在 JodaCompatibleZonedDateTime 中可用的方法调用将导致编译错误,并且可能不允许升级后的节点启动。

影响
在升级之前,请在任何脚本中将 getDayOfWeek 替换为 getDayOfWeekEnum().value。任何使用 getDayOfWeek 并期望返回值为 int 的操作都将导致编译错误或运行时错误,并且可能不允许升级后的节点启动。

以下 JodaCompatibleZonedDateTime 方法必须在升级之前使用 ZonedDateTime 方法替换

  • getMillis()toInstant().toEpochMilli()
  • getCenturyOfEra()get(ChronoField.YEAR_OF_ERA) / 100
  • getEra()get(ChronoField.ERA)
  • getHourOfDay()getHour()
  • getMillisOfDay()get(ChronoField.MILLI_OF_DAY)
  • getMillisOfSecond()get(ChronoField.MILLI_OF_SECOND)
  • getMinuteOfDay()get(ChronoField.MINUTE_OF_DAY)
  • getMinuteOfHour()getMinute()
  • getMonthOfYear()getMonthValue()
  • getSecondOfDay()get(ChronoField.SECOND_OF_DAY)
  • getSecondOfMinute()getSecond()
  • getWeekOfWeekyear()get(IsoFields.WEEK_OF_WEEK_BASED_YEAR)
  • getWeekyear()get(IsoFields.WEEK_BASED_YEAR)
  • getYearOfCentury()get(ChronoField.YEAR_OF_ERA) % 100
  • getYearOfEra()get(ChronoField.YEAR_OF_ERA)
  • toString(String) → DateTimeFormatter
  • toString(String, Locale) → DateTimeFormatter

插件更改编辑

如果您使用 Elasticsearch Service,请跳过此部分。Elasticsearch Service 会为您处理这些更改。

S3、GCS 和 Azure 存储库插件现在包含在 Elasticsearch 中

详情
在以前版本的 Elasticsearch 中,为了注册由 Amazon S3、Google Cloud Storage (GCS) 或 Microsoft Azure Blob Storage 支持的快照存储库,您首先必须安装相应的 Elasticsearch 插件,例如 repository-s3。这些插件现在默认包含在 Elasticsearch 中。

影响
您不再需要安装以下插件,也不应尝试安装。

  • repository-azure
  • repository-gcs
  • repository-s3

Elasticsearch 和 elasticsearch-plugin CLI 工具已更改为容忍尝试安装和移除这些插件,以避免破坏任何现有自动化。将来,尝试安装这些插件将是一个错误。

具体来说,如果您尝试安装上述任何插件,elasticsearch-plugin CLI 工具不会失败,而是会打印警告并跳过这些插件。如果已经安装了任何这些插件(例如,因为您在运行旧版本的 Elasticsearch 时安装了它们),那么您仍然可以使用 elasticsearch-plugin 移除它们。如果未安装这些插件,则尝试移除它们将成功,但会打印警告。

如果您使用 Docker 运行 Elasticsearch 并使用配置文件管理插件,那么当 Elasticsearch 在您升级后首次启动时,它将移除上述插件(如果已安装)。如果您的配置文件中指定了任何这些插件,Elasticsearch 将忽略它们并发出警告日志消息。

第三方插件不能再拦截 REST 请求(RestHandlerWrapper

详情
在以前版本的 Elasticsearch 中,第三方插件可以实现 getRestHandlerWrapper 方法来拦截对节点的所有 REST 请求。此功能的常见用途是实现自定义安全插件以替换内置安全功能。此扩展点不再可供第三方插件使用。

影响
某些旨在与早期版本的 Elasticsearch 一起使用的第三方插件可能与 Elasticsearch 8.0 或更高版本不兼容。

如果您依赖于任何不是由 Elastic 生产和支持的插件,请在升级之前咨询插件作者并确保该插件适用于您的目标 Elasticsearch 版本。

REST API 更改编辑

包含 _xpack 的 REST API 端点已被移除。

详情
在 7.0 中,我们弃用了路径中包含 _xpack 的 REST 端点。这些端点现在在 8.0 中已移除。每个已弃用和移除的端点都替换为一个不包含 _xpack 的新端点。例如,/{index}/_xpack/graph/_explore 替换为 /{index}/_graph/explore

影响
使用替换的 REST API 端点。提交到 _xpack API 端点的请求将返回错误。

兼容性
请求 rest-api-compatibility时,任何包含 `_xpack` 前缀的请求都将被重新路由到不带 _xpack 前缀的相应 URL。

包含映射类型的 REST API 端点已被移除。

详情
映射类型已被移除。包含映射类型的 API 端点也已被移除。请改用无类型端点。

API 类型化 API 端点 无类型 API 端点

批量

<target>/<type>/_bulk

<target>/_bulk

计数

<target>/<type>/_count

<target>/_count

删除

<index>/<type>/<_id>

<index>/_doc/<_id>

按查询删除

<target>/<type>/_delete_by_query

<target>/_delete_by_query

解释

<index>/<type>/<_id>/_explain

<index>/_explain/<_id>

获取

<index>/<type>/<_id>

<index>/_doc/<_id>

<index>/<type>/<_id>/_source

<index>/_source/<_id>

获取字段映射

_mapping/<type>/field/<field>

_mapping/field/<field>

<target>/_mapping/<type>/field/<field>

<target>/_mapping/field/<field>

获取映射

_mapping/<type>

_mapping<target>/_mapping

<target>/<type>/_mapping

<target>/_mapping

<target>/_mapping/<type>

<target>/_mapping

图形探索

<index>/<type>/_graph/explore

<index>/_graph/explore

索引

<target>/<type>/<_id>/_create

<target>/_create/<_id>

<target>/<type>

<target>/_doc

<target>/<type>/<_id>

<target>/_doc/<_id>

多重获取

<index>/<type>/_mget

<index>/_mget

多重搜索

<target>/<type>/_msearch

<target>/_msearch

多重搜索模板

<target>/<type>/_msearch/template

<target>/_msearch/template

多词向量

<index>/<type>/_mtermvectors

<index>/_mtermvectors

汇总搜索

<target>/<type>/_rollup_search

<target>/_rollup_search

搜索

<target>/<type>/_search

<target>/_search

搜索模板

<target>/<type>/_search/template

<target>/_search/template

词向量

<index>/<mapping_type>/<_id>/_termvectors

<index>/_termvectors<_id>

<index>/<mapping_type>/_termvectors

<index>/_termvectors

更新

<index>/<type>/<_id>/_update

<index>/_update/<_id>

按查询更新

<target>/<type>/_update_by_query

<target>/_update_by_query

更新映射

<target>/<type>/_mapping

<target>/_mapping

<target>/_mapping/<type>

<target>/_mapping

_mapping/<type>

<target>/_mapping

验证

<target>/<type>/_validate/query

<target>/_validate/query

影响
请将您的应用程序更新为使用无类型 REST API 端点。对包含映射类型的端点的请求将返回错误。

兼容性
rest-api-compatibility请求时,如果请求包含自定义映射类型,则该类型将被忽略。请求将被重新路由到相应的无类型 URL。请求正文中的自定义映射类型和与类型相关的 HTTP 参数将被忽略,并且在必要时,响应将包含_type : _doc

跨集群搜索 (CCS) 现在仅向后兼容之前的次要版本。

详情
在 8.0+ 版本中,Elastic 支持从本地集群到运行以下版本的远程集群的搜索:

  • 之前的次要版本。
  • 相同的版本。
  • 相同主要版本中的更新的次要版本。

Elastic 还支持从运行主要版本的最后一个次要版本的本地集群到运行以下主要版本中的任何次要版本的远程集群的搜索。例如,本地 7.17 集群可以搜索任何远程 8.x 集群。

远程集群版本

本地集群版本

6.8

7.1–7.16

7.17

8.0

8.1

8.2

8.3

8.4

8.5

8.6

8.7

8.8

8.9

8.10

8.11

8.12

8.13

8.14

6.8

Yes

Yes

Yes

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

7.1–7.16

Yes

Yes

Yes

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

7.17

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.0

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.1

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.2

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.3

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.4

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.5

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.6

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.7

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.8

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.9

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.10

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

8.11

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

8.12

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

8.13

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

8.14

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

对于EQL 搜索 API,如果本地集群和远程集群的版本低于 7.17.7(含)或低于 8.5.1(含),则它们必须使用相同的 Elasticsearch 版本。

例如,本地 8.0 集群可以搜索远程 7.17 或任何远程 8.x 集群。但是,不支持从本地 8.0 集群到远程 7.16 或 6.8 集群的搜索。

以前,我们还支持在运行以下版本的远程集群上进行搜索:

  • 本地集群主要版本的任何次要版本。
  • 先前主要版本的最后一个次要版本。

但是,此类搜索可能会导致未定义的行为。

影响
如果您仅在使用相同或更新版本的远程集群上运行跨集群搜索,则无需进行任何更改。

如果您之前在运行早期版本的 Elasticsearch 的远程集群上进行过搜索,请参阅确保跨集群搜索支持以获取推荐的解决方案。

使用不受支持的配置进行的跨集群搜索可能仍然有效。但是,Elastic 不会对此类搜索进行测试,因此无法保证其行为。

terms 聚合不再支持 _term 排序键。

详情
terms 聚合不再支持 order 值中的 _term 键。要按词条对存储桶进行排序,请改用 _key

影响
停止使用 _term 排序键。包含 _term 排序键的请求将返回错误。

兼容性
rest-api-compatibility请求时,_term 排序将被忽略,并改用 key

date_histogram 聚合不再支持 _time 排序键。

详情
date_histogram 聚合不再支持 order 值中的 _time 键。要按键对存储桶进行排序,请改用 _key

影响
停止使用 _time 排序键。包含 _time 排序键的请求将返回错误。

兼容性
rest-api-compatibility请求时,_time 排序将被忽略,并改用 _key

moving_avg 聚合已被删除。

详情
moving_avg 聚合在 6.4 版本中已弃用,现已删除。要计算移动平均值,请改用moving_fn 聚合

影响
停止使用 moving_avg 聚合。包含 moving_avg 聚合的请求将返回错误。

percentiles 聚合的 percents 参数不再支持重复值。

详情
如果您使用percentiles 聚合指定 percents 参数,则其值必须唯一。否则,将发生异常。

影响
percentiles 聚合的 percents 参数中使用唯一值。在 percents 参数中包含重复值的请求将返回错误。

date_histogram 聚合的 interval 参数不再有效。

详情
现在,为date_histogram 聚合https://elastic.ac.cn/guide/en/elasticsearch/reference/8.14/search-aggregations-bucket-composite-aggregation.html#_date_histogram[composite date_histogram 源指定 interval 参数将导致错误。请根据需要使用 calendar_intervalfixed_interval

影响
date_histogram 聚合或 date_histogram 复合源中使用 interval 参数现在将生成错误。请改用更具体的 fixed_intervalcalendar_interval 参数。

兼容性
rest-api-compatibility请求时,interval 参数将被调整为固定间隔或日历间隔。

nGramedgeNGram 标记过滤器名称已被删除。

详情
自 6.4 版本起已弃用的 nGramedgeNGram 标记过滤器名称已被删除。从 7.0 版本开始,这两个标记过滤器只能通过其备用名称 ngramedge_ngram 使用。

影响
使用等效的 ngramedge_ngram 标记过滤器。包含 nGramedgeNGram 标记过滤器名称的请求将返回错误。

nGramedgeNGram 分词器名称已被删除。

详情
nGramedgeNGram 分词器名称已在 7.6 版本中弃用,并且在新索引中不再受支持。7.6 版本之后创建的索引的映射将继续有效,但会发出弃用警告。对于新索引和索引模板,应将分词器名称更改为完全等效的 ngramedge_ngram 名称。

影响
使用 ngramedge_ngram 分词器。使用 nGramedgeNGram 分词器名称创建新索引的请求将返回错误。

in_flight_requests 统计信息已在日志和诊断 API 中重命名为 inflight_requests

详情
日志输出和诊断 API(例如节点统计信息 API)中正在进行的请求断路器的名称已从 in_flight_requests 更改为 inflight_requests,以与其对应设置的名称保持一致。

影响
更新您的工作流和应用程序,以使用 inflight_requests 统计信息来代替 in_flight_requests

投票配置排除 API 端点已更改。

详情
POST /_cluster/voting_config_exclusions/{node_filter} API 已删除,取而代之的是 POST /_cluster/voting_config_exclusions?node_names=...POST /_cluster/voting_config_exclusions?node_ids=...,它们允许您指定要排除的节点的名称或 ID。

影响
使用 POST /_cluster/voting_config_exclusions?node_ids=... 并指定要排除的节点,而不是使用节点过滤器。提交到 /_cluster/voting_config_exclusions/{node_filter} 端点的请求将返回错误。

如果远程系统索引与自动跟随模式匹配,则不会自动跟随它们。

详情
自动跟随模式匹配的远程系统索引不会自动配置为跟随者索引。

影响
如果需要,请显式创建跟随者索引以跟随远程系统索引。

EQL wildcard 函数已被删除。

详情
wildcard 函数在 Elasticsearch 7.13.0 中已弃用,现已删除。

影响
请改用 likeregex 关键字

ILM freeze 操作现在是无操作。

详情
ILM freeze 操作现在是无操作,不会对索引执行任何操作,因为 freeze API 端点已在 8.0 中删除。

影响
更新您的 ILM 策略,以从 cold 阶段中删除 freeze 操作。

对 ILM 策略的附加验证。

详情
创建或更新 ILM 策略现在要求任何引用的快照存储库和 SLM 策略都存在。

影响
更新您的代码或配置管理,以确保在引用存储库和 SLM 策略的任何策略之前创建它们。

已弃用的 _upgrade API 已被删除。

详情
以前,_upgrade API 会将索引从之前的版本升级到当前版本。现在应该改用 _reindex API 来实现此目的。

影响
对旧的 _upgrade API 发出的请求将返回错误。

已弃用的冻结索引 API 已被删除。

详情
冻结索引 API(POST /<index>/_freeze)已被移除。堆内存使用率的改进消除了冻结索引的理由。您仍然可以使用解冻索引 API解冻现有的冻结索引。对于某些用例,冻结层可能是冻结索引的合适替代方案。有关更多信息,请参阅数据层

影响
向旧的冻结索引 API 发出的请求将返回错误。

强制合并 API 的 max_num_segmentsonly_expunge_deletes 参数不能在同一个请求中同时指定。

详情
以前,强制合并 API 允许同时将参数 only_expunge_deletesmax_num_segments 设置为非默认值。但是,当 only_expunge_deletes 设置为 true 时,max_num_segments 会被静默忽略,从而给人一种它已被应用的错误印象。

影响
使用强制合并 API时,不要同时为 max_num_segmentsonly_expunge_deletes 参数指定值。包含这两个参数值的请求将返回错误。

创建或更新索引模板 API 的 template 参数已被移除。

详情
在 6.0 中,我们弃用了创建或更新索引模板请求中的 template 参数,转而使用 index_patterns。在 8.0 中,对 template 参数的支持现已移除。

影响
使用创建或更新索引模板 APIindex_patterns 参数。包含 template 参数的请求将返回错误。

兼容性
请求 rest-api-compatibility时,template 参数将映射到 index_patterns

同步刷新已被移除。

详情
同步刷新在 7.6 中已弃用,并在 8.0 中移除。请改用常规刷新,因为它与 7.6 及更高版本中的同步刷新具有相同的效果。

影响
使用刷新 API。对 /<index>/flush/synced/flush/synced 端点的请求将返回错误。

兼容性
请求 rest-api-compatibility时,对同步刷新的请求将路由到等效的非同步刷新 URL。

关闭索引 API 上的 ?wait_for_active_shards 参数的默认值已更改。

详情
在早期版本中关闭索引时,默认情况下,Elasticsearch 在返回之前不会等待已关闭索引的分片被正确分配。从 8.0 版本开始,默认行为是根据index.write.wait_for_active_shards 索引设置等待分片被分配。

影响
接受新行为,或者如果需要,指定 ?wait_for_active_shards=0 以保留旧行为。

索引统计信息 API 的 types 查询参数已被移除。

详情
索引统计信息 API 的 types 查询参数已被移除。以前,您可以将 typesindexing 查询参数组合使用,以返回特定映射类型的索引统计信息。映射类型已在 8.0 中移除。

影响
停止使用 types 查询参数。包含该参数的请求将返回错误。

兼容性
请求 rest-api-compatibility时,types 查询参数将被忽略,并且将返回整个索引的统计信息。

user_agent 摄取处理器的 ecs 参数不起作用。

详情
在 7.2 中,我们弃用了 user_agent 摄取处理器的 ecs 参数。在 8.x 中,user_agent 摄取处理器将只返回弹性通用模式 (ECS)字段,而不管 ecs 值是什么。

影响
为了避免弃用警告,请从摄取管道中移除该参数。如果管道指定了 ecs 值,则该值将被忽略。

include_type_name 查询参数已被移除。

详情
include_type_name 查询参数已从索引创建、索引模板和映射 API 中移除。以前,您可以将 include_type_name 设置为 true,以指示请求和响应应包含映射类型名称。映射类型已在 8.x 中移除。

影响
停止使用 include_type_name 查询参数。包含该参数的请求将返回错误。

兼容性
请求 rest-api-compatibility时,include_type_name 查询参数将被忽略,并且请求中的任何自定义映射类型都将被移除。

从远程重新索引现在会重新编码 URL 编码的索引名称。

详情
从远程重新索引以前允许使用 URL 编码的索引名称,并且在为远程主机生成搜索请求时不会重新编码它们。这种宽松性已被移除,以便在重新索引生成远程搜索请求时,所有索引名称都被正确编码。

影响
为从远程请求重新索引指定未编码的索引名称。

在重新索引、按查询删除和按查询更新 API 中,size 参数已重命名。

详情
以前,_reindex 请求在正文中有两个不同的 size 规范

  • 外层,确定要处理的最大文档数
  • source 元素内部,确定滚动/批处理大小。

外层 size 参数现在已重命名为 max_docs,以避免混淆并阐明其语义。

类似地,_delete_by_query_update_by_querysize 参数已重命名为 max_docs,以保持 3 个接口的一致性。

影响
使用替换参数。包含 size 参数的请求将返回错误。

兼容性
请求 rest-api-compatibility时,size 参数将映射到 max_docs 参数。

按查询更新 API 现在拒绝不支持的 script 字段。

详情
script 对象中包含不支持的字段的按查询更新 API 请求现在将返回错误。以前,API 会静默忽略这些不支持的字段。

影响
为了避免错误,请从 script 对象中移除不支持的字段。

cat 节点 API 的 local 查询参数已被移除。

详情
GET _cat/nodes API 的 ?local 参数在 7.x 中已弃用,并在 8.0 中被拒绝。此参数导致 API 使用本地集群状态来确定 API 返回的节点,而不是使用来自主节点的集群状态,但此 API 会从每个选定的节点请求信息,而不管 ?local 参数是什么,这意味着此 API 不会以完全节点本地的方式运行。

影响
停止使用 ?local 查询参数。包含此参数的cat 节点 API请求将返回错误。

cat 分片 API 的 local 查询参数已被移除。

详情
GET _cat/shards API 的 ?local 参数在 7.x 中已弃用,并在 8.0 中被拒绝。此参数导致 API 使用本地集群状态来确定 API 返回的节点,而不是使用来自主节点的集群状态,但此 API 会从每个选定的节点请求信息,而不管 ?local 参数是什么,这意味着此 API 不会以完全节点本地的方式运行。

影响
停止使用 ?local 查询参数。包含此参数的cat 分片 API请求将返回错误。

cat 索引 API 的 local 查询参数已被移除。

详情
GET _cat/indices API 的 ?local 参数在 7.x 中已弃用,并在 8.0 中被拒绝。此参数导致 API 使用本地集群状态来确定 API 返回的节点,而不是使用来自主节点的集群状态,但此 API 会从每个选定的节点请求信息,而不管 ?local 参数是什么,这意味着此 API 不会以完全节点本地的方式运行。

影响
停止使用 ?local 查询参数。包含此参数的cat 索引 API请求将返回错误。

获取字段映射 API 的 local 查询参数已被移除。

详情
获取字段映射 API 的 local 参数在 7.8 中已弃用,并在 8.0 中移除。此参数是无操作的,并且字段映射始终在本地检索。

影响
停止使用 local 查询参数。包含此参数的获取字段映射 API请求将返回错误。

向作业 API 发送数据已弃用。

详情
机器学习向作业 API 发送数据从 7.11.0 开始弃用,并将在未来的主要版本中移除。

影响
请改用数据馈送

更新数据馈送 API 的 job_id 属性已被移除。

详情
在 7.3.0 版本中,已弃用在数据馈送中更新 job_id 的功能,并在 8.0 版本中已移除该功能。

影响
无法在异常检测作业之间移动数据馈送。

当存储库正在使用时,创建存储库和删除存储库 API 返回 409 状态代码,而不是 500

详情
当请求尝试修改正在使用的现有存储库时,创建或更新快照存储库 API删除快照存储库 API 返回 409 状态代码,而不是状态代码 500

影响
更新处理存储库创建和删除的客户端代码,以反映此更改。

已从机器学习 API 中移除 allow_no_datafeeds 属性。

详情
在 7.10.0 版本中,已弃用 cat 数据馈送获取数据馈送获取数据馈送统计信息停止数据馈送 API 中的 allow_no_datafeeds 属性。

影响
请改用 allow_no_match

已从机器学习 API 中移除 allow_no_jobs 属性。

详情
在 7.10.0 版本中,已弃用 cat 异常检测器关闭异常检测作业获取异常检测作业获取异常检测作业统计信息获取总体存储桶 API 中的 allow_no_jobs 属性。

影响
请改用 allow_no_match

如果作业已启动,则 StartRollupJob 端点现在返回成功状态。

详情
以前,尝试启动已启动的汇总作业会导致 500 InternalServerError: Cannot start task for Rollup Job [job] because state was [STARTED] 异常。

现在,尝试启动已启动的作业只会返回成功的 200 OK: started 响应。

影响
更新您的工作流程和应用程序,以假设尝试启动汇总作业时返回 200 状态意味着作业处于活动启动状态。请求本身可能已启动作业,或者作业之前正在运行,因此请求无效。

存储的脚本不再支持空脚本或搜索模板。

详情
创建或更新存储的脚本 APIsource 参数不能为空。

影响
在升级之前,请使用 删除存储的脚本 API 删除任何空的存储的脚本或搜索模板。在 8.0 版本中,Elasticsearch 将从集群状态中删除任何空的存储的脚本或空的搜索模板。使用空的 source 创建存储的脚本或搜索模板的请求将返回错误。

已移除创建或更新存储的脚本 API 的 code 参数。

详情
已移除 创建或更新存储的脚本 APIcode 参数。请改用 source 参数。

影响
停止使用 code 参数。包含该参数的请求将返回错误。

不再支持对 _type 字段进行搜索。

详情
在 8.x 版本中,已移除 _type 元数据字段。Elasticsearch 现在将对 _type 字段的搜索视为对不存在字段的搜索。对不存在字段的搜索不匹配任何文档,无论查询字符串是什么。

在 7.x 版本中,在 _type 字段中搜索 _doc 将匹配与 match_all 查询相同的文档。

影响
从搜索请求和搜索模板中移除对 _type 字段的查询。包含这些查询的搜索可能不会返回任何结果。

多重搜索 API 现在将文本文件中的空首行解析为操作元数据。

详情
当您提供文本文件作为请求正文时(例如,使用 curl 的 --data-binary 标志时),多重搜索 API 现在会将空首行解析为空操作元数据。

该 API 不再支持包含以下内容的文本文件:

  • 空首行,后跟仅包含 {} 的行。
  • 空首行,后跟另一个空行。

影响
不要向多重搜索 API 提供不受支持的文本文件。包含不受支持文件的请求将返回错误。

已移除 unmapped_type: string 排序选项。

详情
搜索请求不再支持 unmapped_type: string 排序选项。请改用 unmapped_type: keyword 来处理未映射的字段,就好像它具有 keyword 字段类型一样,但在排序时忽略其值。

影响
停止使用 unmapped_type: string。包含 unmapped_type: string 排序选项的搜索请求将返回分片故障。

默认情况下,不允许对 _id 进行聚合和排序。

详情
以前,可以通过加载名为 fielddata 的昂贵数据结构来对内置的 _id 字段进行聚合和排序。这在 7.6 版本中已弃用,现在在 8.0 版本中默认情况下不允许。

影响
应避免对 _id 进行聚合和排序。作为替代方法,可以将 _id 字段的内容复制到另一个启用了 docvalues 的字段中(请注意,这不适用于自动生成的 ID)。

已移除 common 查询。

详情
在 7.x 版本中已弃用的 common 查询已在 8.0 版本中移除。如果未跟踪匹配总数,则 match 查询可以实现相同的功能。

影响
停止使用 common 查询。包含 common 查询的搜索请求将返回错误。

已从 matchmulti_match 查询中移除 cutoff_frequency 参数。

详情
在 7.x 版本中已弃用的 cutoff_frequency 参数已在 8.0 版本中从 matchmulti_match 查询中移除。如果未跟踪匹配总数,则无需任何配置即可实现相同的功能。

影响
停止使用 cutoff_frequency 参数。在 matchmulti_match 查询中包含此参数的搜索请求将返回错误。

已从搜索 API 的 sort 请求正文参数中移除 nested_filternested_path 属性。

详情
在 6.x 版本中已弃用的 nested_filternested_path 选项已移除,取而代之的是 nested 上下文。

影响
停止使用 sort 请求正文参数的 nested_filternested_path 属性。包含这些属性的请求将返回错误。

搜索和获取请求现在默认使用自适应副本选择路由到分片。

详情
Elasticsearch 将不再优先使用相同位置(具有相同的感知属性值)中的分片来处理 _search_get 请求。自适应副本选择(在此版本中默认激活)将使用先前节点间通信的服务时间更有效地路由请求。

影响
无需采取任何措施。

不再支持使用 (query, doc['field']) 的向量函数。

详情
形式为 function(query, doc['field']) 的向量函数已在 7.6 版本中弃用,并在 8.x 版本中移除。应改用 function(query, 'field') 形式。例如,cosineSimilarity(query, doc['field']) 被替换为 cosineSimilarity(query, 'field')

影响
使用 function(query, 'field') 形式。停止使用 function(query, doc['field']) 形式。包含 function(query, doc['field']) 形式的请求将返回错误。

搜索 API 的 indices_boost 请求正文参数不再接受对象值。

详情
搜索请求中的 indices_boost 选项过去接受提升值作为对象和数组。对象格式自 5.2 版本以来已被弃用,并在 8.0 版本中移除。

影响
indices_boost 参数中仅使用数组值。在 indices_boost 参数中包含对象值的请求将返回错误。

已移除搜索 API 的 use_field_mapping 请求正文参数。

详情
在 7.0 版本中,我们开始默认使用每个字段的映射定义来格式化 docvalue_fields。为了简化从 6.x 版本的过渡,我们添加了格式选项 use_field_mapping。此参数在 7.0 版本中已弃用,并在 8.0 版本中移除。

影响
停止使用 use_field_mapping 请求正文参数。包含此参数的请求将返回错误。

兼容性
请求 rest-api-compatibility 时,将忽略 use_field_mapping 参数。

搜索 API 的 from 请求正文和 url 参数不能为负数。

详情
搜索请求过去接受在搜索正文和 url 中使用 -1 作为 from,将其视为默认值 0。其他负值已被拒绝并返回错误。我们现在也拒绝 -1 作为无效值。

影响
将请求正文或 url 参数中 from 参数的任何 -1 用法更改为将其设置为 0 或完全省略它。包含负值的请求将返回错误。

对日期字段的范围查询将数字值始终视为自纪元以来的毫秒数。

详情
对日期字段的范围查询过去在未设置其他格式的情况下会将小数字(例如,四位数,如 1000)错误地解释为年份,但会将其他数字值解释为自纪元以来的毫秒数。我们现在在缺少特定 format 参数的情况下将所有数字值都视为自纪元以来的毫秒数。如果您想改为查询年份,并且缺少 format,则现在需要将输入值用引号引起来(例如,“1984”)。

影响
如果您在未指定 format 的情况下查询日期字段,请检查查询中的值是否实际上应为自纪元以来的毫秒数,如果是,请使用数字值。如果不是,请使用字符串值,该值将由映射中字段上设置的日期格式或默认情况下由 strict_date_optional_time 解析。

已移除 geo_bounding_box 查询的 type 参数。

详情
geo_bounding_box 查询的 type 参数已在 7.14.0 版本中弃用,并在 8.0.0 版本中移除。此参数是无操作参数,对查询没有任何影响。

影响
停止使用 type 参数。包含此参数的 geo_bounding_box 查询将返回错误。

type 查询已被移除。

详情
type 查询已被移除。映射类型已在 8.0 中移除。

影响
停止使用 type 查询。包含 type 查询的请求将返回错误。

kibana_user 角色已重命名为 kibana_admin

详情
以前分配了 kibana_user 角色的用户应改为分配 kibana_admin 角色。此角色授予与 kibana_user 相同的权限集,但已重命名以更好地反映其预期用途。

影响
将具有 kibana_user 角色的用户分配到 kibana_admin 角色。停止使用 kibana_user 角色。

对于快照和 SLM API,indices 参数不再解析为系统索引或系统数据流。

详情
对于快照和 SLM API,indices 参数不再解析为系统索引或系统数据流。功能状态 现在是从快照备份和恢复系统索引或系统数据流的唯一方法。

您不能再将 indices 参数用于 创建 SLM 策略 API创建快照 API 以在快照中包含系统索引。要备份系统索引,请使用 include_global_statefeature_states 参数来包含相应的功能状态。默认情况下,include_global_statefeature_states 参数包含所有系统索引。

同样,您不能再使用 恢复快照 APIindices 参数从快照恢复系统索引。要恢复系统索引,请使用 include_global_statefeature_states 参数来恢复相应的功能状态。默认情况下,include_global_statefeature_states 参数不恢复任何系统索引。

影响
如果您以前使用 indices 参数备份或恢复系统索引,请更新您的 SLM 策略和应用程序以改用 include_global_statefeature_states 参数。

indices 参数中明确指定系统索引的 SLM 策略将无法创建快照。同样,在 indices 参数中明确指定系统索引的创建快照 API 或恢复快照 API 请求将失败并返回错误。如果 indices 值包含通配符 (*) 模式,则该模式将不再匹配系统索引。

快照默认压缩元数据文件。

详情
以前,compress 的默认值为 false。默认值已更改为 true

此更改将影响新创建的存储库和未明确指定 compress=false 的现有存储库。

影响
更新您的工作流程和应用程序,以假定 compress 参数的默认值为 true

S3 快照存储库现在默认使用 DNS 样式的访问模式。

详情
从 7.4 版开始,s3 快照存储库默认不再使用现已弃用的路径样式访问模式。在 7.0、7.1、7.2 和 7.3 版本中,s3 快照存储库始终使用路径样式访问模式。对于仅支持路径样式访问但被 AWS SDK 识别为支持 DNS 样式访问的部署来说,这是一个重大更改。此重大更改是必要的,因为 AWS 宣布 路径样式访问模式已弃用,并且在 2020 年 9 月 30 日之后创建的存储桶上将不受支持。

影响
如果您的部署仅支持路径样式访问并且受此更改的影响,则必须将 S3 客户端设置 path_style_access 配置为 true

恢复请求不再接受设置。

详情
在早期版本中,您可以在恢复快照请求的正文中同时传递 settingsindex_settings,但 settings 值会被忽略。恢复快照 API 现在拒绝包含 settings 值的请求。

影响
停止在恢复快照请求中使用 settings 参数。包含这些参数的请求将返回错误。

存储库统计信息 API 已被移除。

详情
存储库统计信息 API 已被移除。我们在 7.10.0 中弃用了此实验性 API。

影响
请改用 存储库计量 API

Watcher 历史记录现在写入隐藏的数据流。

详情
在 8.x 中,Elasticsearch 将 Watcher 历史记录写入隐藏的 .watcher-history-<index-template-version> 数据流。以前,Elasticsearch 将 Watcher 历史记录写入隐藏的 .watcher-history-<index-template-version>-<yyyy-MM-dd> 索引。

影响
更新您的请求以定位 Watcher 历史记录数据流。例如,使用 .watcher-history-* 通配符表达式。专门针对不存在的 Watcher 历史记录索引的请求可能会返回错误。

如果服务器超时,则集群运行状况 API 的 HTTP 状态代码已更改。

详情
集群运行状况 API 包括用于等待满足某些运行状况条件的选项。如果在超时时间内未满足请求的条件,则 Elasticsearch 将发回正常的响应,包括字段 "timed_out": true。在早期版本中,如果请求超时,它还会使用 HTTP 响应代码 408 Request timeout,否则使用 200 OK408 Request timeout 响应代码不适用于这种情况,因此从 8.0.0 版本开始,Elasticsearch 将对这两种情况使用响应代码 200 OK

影响
要检测服务器超时,请检查 JSON 响应的 timed_out 字段。

SQL JDBC 更改编辑

JDBC 驱动程序将几何对象作为熟知文本字符串返回,而不是 org.elasticsearch.geo 对象。

详情
为了减少 JDBC 驱动程序对 Elasticsearch 类的依赖,JDBC 驱动程序使用 WKT(熟知文本)格式将几何数据作为字符串返回,而不是来自 org.elasticsearch.geometry 的类。用户可以选择所需的几何库,将字符串表示形式转换为完整的对象,例如 elasticsearch-geo 库(像以前一样返回对象 org.elasticsearch.geo)、jts 或 spatial4j。

影响
在升级之前,通过简单地调用 toStringorg.elasticsearch.geometry.utils.WellKnownText#toWKT/fromWKT 方法,将 Elasticsearch JDBC 驱动程序上的任何 org.elasticsearch.geo 类替换为其 WKT 表示形式。

此更改不会影响不使用几何类的用户。

系统要求更改编辑

如果您使用 Elasticsearch Service,请跳过此部分。Elasticsearch Service 会为您处理这些更改。

不再支持多个已停产的操作系统。

详情
以下操作系统已达到其生命周期终止,Elasticsearch 不再支持

  • Amazon Linux
  • CentOS 6
  • Debian 8
  • openSUSE Leap 42
  • Oracle Enterprise Linux 6
  • Ubuntu 16.04

我们还移除了对 SysV init 的支持。没有受支持的操作系统使用 SysV init 进程。

详情
确保您的节点使用 受支持的操作系统。在不受支持的操作系统上运行 Elasticsearch 可能会导致意外错误或故障。

需要 Java 17。

详情
现在需要 Java 17 或更高版本才能运行 Elasticsearch 及其任何命令行工具。

影响
使用 Java 17 或更高版本。尝试使用早期 Java 版本运行 Elasticsearch 8.0 将失败。

目前还没有经过 FIPS 认证的 Java 17 安全模块可供您在 FIPS 140-2 模式下运行 Elasticsearch 8.0 时使用。如果您在 FIPS 140-2 模式下运行,则需要向您的安全组织请求例外以升级到 Elasticsearch 8.0,或者在 Java 17 获得认证之前一直使用 Elasticsearch 7.x。

不再支持 JAVA_HOME

详情
不再支持使用 JAVA_HOME 设置 JDK 的路径。请改用捆绑的 JDK(首选)或设置 ES_JAVA_HOME

影响
使用捆绑的 JDK(首选)或设置 ES_JAVA_HOMEJAVA_HOME 将被忽略。

转换更改编辑

必须升级在 7.4 或更早版本中创建的转换。

详情
早期测试版的转换的配置信息格式不再受支持。

影响
使用 升级转换 API 来修复您的转换。此升级不会影响源索引或目标索引。

弃用编辑

以下功能已在 Elasticsearch 8.0 中弃用,并将在未来版本中移除。虽然这不会立即影响您的应用程序,但我们强烈建议您在升级到 8.0 后采取所述步骤来更新您的代码。

要确定您是否正在使用任何已弃用的功能,请启用 弃用日志记录

集群和节点设置弃用编辑

我们不再建议使用瞬态集群设置。

详情
我们不再建议使用瞬态集群设置。请改用持久集群设置。如果集群变得不稳定,瞬态设置可能会意外清除,从而导致不希望的集群配置。

影响
瞬态集群设置尚未弃用,但我们计划在未来版本中弃用它们。有关迁移步骤,请参阅瞬态设置迁移指南

命令行工具弃用编辑

如果您使用 Elasticsearch Service,请跳过此部分。Elasticsearch Service 会为您处理这些更改。

elasticsearch-setup-passwords 工具已弃用。

详情
elasticsearch-setup-passwords 工具在 8.0 中已弃用。要手动重置内置用户的密码(包括 elastic 用户),请使用 elasticsearch-reset-password 工具、Elasticsearch 更改密码 API 或 Kibana 中的用户管理功能。elasticsearch-setup-passwords 将在未来版本中删除。

影响
首次启动 Elasticsearch 时,会自动为 elastic 用户生成密码。如果在启动 Elasticsearch 后运行 elasticsearch-setup-passwords,它将失败,因为 elastic 用户密码已配置。