迁移到 8.0
编辑迁移到 8.0编辑
本节讨论将应用程序迁移到 Elasticsearch 8.0 时需要注意的更改。
另请参阅 8.14 中的新增功能 和 发行说明。
重大更改编辑
Elasticsearch 8.0 中的以下更改可能会影响您的应用程序并阻止其正常运行。在升级到 8.0 之前,请查看这些更改并采取所述步骤以减轻影响。
集群和节点设置更改编辑
表示对 Elasticsearch Service 支持的 用户设置 的更改。
action.destructive_requires_name
现在默认为 true
。
详情
在 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
中或通过 集群更新设置 API 将 indices.lifecycle.poll_interval
设置为 1s
或更大。
在 elasticsearch.yml
中将 indices.lifecycle.poll_interval
设置为小于 1s
将导致启动时出错。集群更新设置 API 请求将 indices.lifecycle.poll_interval
设置为小于 1s
将返回错误。
文件和本机领域现在已启用,除非明确禁用。
详情
文件和本机领域现在已启用,除非明确禁用。如果明确禁用,则文件和本机领域将始终保持禁用状态。
以前,文件和本机领域具有以下隐式行为
- 如果未配置文件和本机领域,则在配置任何其他领域时,它们将被隐式禁用。
- 如果没有其他领域可用,因为领域未配置、许可证不允许或明确禁用,则即使明确禁用,文件和本机领域也会启用。
影响
要明确禁用文件或本机领域,请在 elasticsearch.yml
的 xpack.security.authc.realms
命名空间下将相应的 file.<realm-name>.enabled
或 native.<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_size
和 xpack.security.authz.store.roles.index.cache.ttl
设置已被删除。自 Elasticsearch 5.2 版本以来,这些设置一直是多余的,并且已弃用。
影响
从 elasticsearch.yml
中删除 xpack.security.authz.store.roles.index.cache.max_size
和 xpack.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.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.transport.ssl
证书和密钥才能为传输接口启用 SSL。
详情
现在,如果在没有通过使用 xpack.security.transport.ssl.keystore.path
设置或 xpack.security.transport.ssl.certificate
和 xpack.security.transport.ssl.key
设置配置证书和密钥的情况下为传输接口启用 SSL,则会出现错误。
影响
如果 xpack.security.transport.ssl.enabled
设置为 true
,请使用 xpack.security.transport.ssl.keystore.path
设置或 xpack.security.transport.ssl.certificate
和 xpack.security.transport.ssl.key
设置提供证书和密钥。如果未提供证书和密钥,Elasticsearch 将在启动时返回错误。
现在需要 xpack.security.http.ssl
证书和密钥才能为 HTTP 服务器启用 SSL。
详情
现在,如果在没有通过使用 xpack.security.http.ssl.keystore.path
设置或 xpack.security.http.ssl.certificate
和 xpack.security.http.ssl.key
设置配置证书和密钥的情况下为 HTTP(Rest)服务器启用 SSL,则会出现错误。
影响
如果 xpack.security.http.ssl.enabled
设置为 true
,请使用 xpack.security.http.ssl.keystore.path
设置或 xpack.security.http.ssl.certificate
和 xpack.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_nodes
或 gateway.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 配置中指定任何这些集群设置将在启动时导致错误。使用这些设置的任何索引在加载索引元数据时,这些设置都将被存档(并且不会生效)。
单个数据节点水印设置已弃用,现在仅接受 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
设置已被移除。
listener
线程池已被移除。
详情
以前,传输客户端使用线程池来确保不在网络线程上回调侦听器。传输客户端已在 8.0 中移除,不再需要线程池。
影响
从任何节点的 elasticsearch.yml
中移除 listener
线程池设置。在 elasticsearch.yml
中指定 listener
线程池设置将在启动时导致错误。
fixed_auto_queue_size
线程池类型已被移除。
详情
之前标记为实验性功能的 fixed_auto_queue_size
线程池类型已在 7.x 中弃用,并在 8.0 中移除。search
和 search_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.age
和 index.translog.retention.size
设置。
详情
事务日志保留设置 index.translog.retention.age
和 index.translog.retention.size
在 7.4 中实际上被忽略,在 7.7 中被弃用,并在 8.0 中被删除,转而支持软删除。
影响
停止使用 index.translog.retention.age
和 index.translog.retention.size
索引设置。包含这些设置的请求将返回错误。
Java API 更改编辑
在 Java 高级 REST 客户端中,indexlifecycle
包已重命名为 ilm
。
详情
在高级 REST 客户端中,indexlifecycle
包已重命名为 ilm
,以匹配 Elasticsearch 代码中的包重命名。
影响
更新您的工作流和应用程序以使用 ilm
包来代替 indexlifecycle
。
对 Fuzziness
的更改。
详情
要创建 Fuzziness
实例,请使用 fromString
和 fromEdits
方法,而不是过去接受字符串和数值的 build
方法。查询构建器上的多个模糊性设置器(例如 MatchQueryBuilder#fuzziness)现在只接受 Fuzziness
实例,而不是对象。
Fuzziness 过去在解析任意数值时比较宽松,会静默地将它们截断为三个允许的编辑距离之一:0、1 或 2。现在,这种宽松性已被删除,并且在尝试使用其他值(例如,过去接受但截断为 1 的浮点数,如 1.3)构造实例时,该类将抛出错误。
影响
使用可用的常量(例如,Fuzziness.ONE
、Fuzziness.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_names
的 enabled
设置。不再需要禁用 _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 端点 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
影响
请将您的应用程序更新为使用无类型 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 |
||||||||||||||||||
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 |
对于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_interval
或 fixed_interval
。
影响
在 date_histogram
聚合或 date_histogram
复合源中使用 interval
参数现在将生成错误。请改用更具体的 fixed_interval
或 calendar_interval
参数。
兼容性
当rest-api-compatibility被请求时,interval
参数将被调整为固定间隔或日历间隔。
nGram
和 edgeNGram
标记过滤器名称已被删除。
详情
自 6.4 版本起已弃用的 nGram
和 edgeNGram
标记过滤器名称已被删除。从 7.0 版本开始,这两个标记过滤器只能通过其备用名称 ngram
和 edge_ngram
使用。
影响
使用等效的 ngram
和 edge_ngram
标记过滤器。包含 nGram
和 edgeNGram
标记过滤器名称的请求将返回错误。
nGram
和 edgeNGram
分词器名称已被删除。
详情nGram
和 edgeNGram
分词器名称已在 7.6 版本中弃用,并且在新索引中不再受支持。7.6 版本之后创建的索引的映射将继续有效,但会发出弃用警告。对于新索引和索引模板,应将分词器名称更改为完全等效的 ngram
或 edge_ngram
名称。
影响
使用 ngram
和 edge_ngram
分词器。使用 nGram
和 edgeNGram
分词器名称创建新索引的请求将返回错误。
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 中已弃用,现已删除。
影响
请改用 like
或 regex
关键字。
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 的 max_num_segments
和 only_expunge_deletes
参数不能在同一个请求中同时指定。
详情
以前,强制合并 API 允许同时将参数 only_expunge_deletes
和 max_num_segments
设置为非默认值。但是,当 only_expunge_deletes
设置为 true
时,max_num_segments
会被静默忽略,从而给人一种它已被应用的错误印象。
影响
使用强制合并 API时,不要同时为 max_num_segments
和 only_expunge_deletes
参数指定值。包含这两个参数值的请求将返回错误。
创建或更新索引模板 API 的 template
参数已被移除。
详情
在 6.0 中,我们弃用了创建或更新索引模板请求中的 template
参数,转而使用 index_patterns
。在 8.0 中,对 template
参数的支持现已移除。
影响
使用创建或更新索引模板 API 的 index_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
查询参数已被移除。以前,您可以将 types
与 indexing
查询参数组合使用,以返回特定映射类型的索引统计信息。映射类型已在 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_query
的 size
参数已重命名为 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 状态意味着作业处于活动启动状态。请求本身可能已启动作业,或者作业之前正在运行,因此请求无效。
存储的脚本不再支持空脚本或搜索模板。
详情
创建或更新存储的脚本 API 的 source
参数不能为空。
影响
在升级之前,请使用 删除存储的脚本 API 删除任何空的存储的脚本或搜索模板。在 8.0 版本中,Elasticsearch 将从集群状态中删除任何空的存储的脚本或空的搜索模板。使用空的 source
创建存储的脚本或搜索模板的请求将返回错误。
已移除创建或更新存储的脚本 API 的 code
参数。
详情
已移除 创建或更新存储的脚本 API 的 code
参数。请改用 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
查询的搜索请求将返回错误。
已从 match
和 multi_match
查询中移除 cutoff_frequency
参数。
详情
在 7.x 版本中已弃用的 cutoff_frequency
参数已在 8.0 版本中从 match
和 multi_match
查询中移除。如果未跟踪匹配总数,则无需任何配置即可实现相同的功能。
影响
停止使用 cutoff_frequency
参数。在 match
或 multi_match
查询中包含此参数的搜索请求将返回错误。
已从搜索 API 的 sort
请求正文参数中移除 nested_filter
和 nested_path
属性。
详情
在 6.x 版本中已弃用的 nested_filter
和 nested_path
选项已移除,取而代之的是 nested
上下文。
影响
停止使用 sort
请求正文参数的 nested_filter
和 nested_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_state
和 feature_states
参数来包含相应的功能状态。默认情况下,include_global_state
和 feature_states
参数包含所有系统索引。
同样,您不能再使用 恢复快照 API 的 indices
参数从快照恢复系统索引。要恢复系统索引,请使用 include_global_state
和 feature_states
参数来恢复相应的功能状态。默认情况下,include_global_state
和 feature_states
参数不恢复任何系统索引。
影响
如果您以前使用 indices
参数备份或恢复系统索引,请更新您的 SLM 策略和应用程序以改用 include_global_state
和 feature_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
。
恢复请求不再接受设置。
详情
在早期版本中,您可以在恢复快照请求的正文中同时传递 settings
和 index_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 OK
。 408 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。
影响
在升级之前,通过简单地调用 toString
或 org.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_HOME
。 JAVA_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
用户密码已配置。