Elasticsearch 8.x 正式发布!
共 5093字,需浏览 11分钟
·
2022-04-24 13:56
Elasticsearch 是一个基于 Lucene 库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。Elasticsearch 是用 Java 开发的,并在 Apache 许可证下作为开源软件发布。官方客户端在 Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby 和许多其他语言中都是可用的。
7.x REST API 兼容性
8.0 为 Elasticsearch REST APIs 引入了一些重大的变化。虽然更新你的应用程序以适应这些变化十分重要,但在升级后寻找和更新每一个 API 调用可能对开发者而言十分痛苦且容易出错。为了使这个过程变得更加容易,Elasticsearch 已经在 REST API 中增加了对 7.x 兼容性 header 的支持。这些可选的 header 文件让你向 8.0 集群发出 7.x 兼容的请求,并收到 7.x 兼容的响应。
虽然官方仍然建议开发者更新你的应用程序以使用原生的 8.0 请求和响应,但 7.x API 兼容 header 文件让你可以在更长的时间内安全地进行这些更改。
安全功能在默认情况下被启用和配置
在没有安全保障的情况下运行 Elasticsearch 会让你的集群暴露在任何可以向 Elasticsearch 发送请求的用户面前。在以前的版本中,你必须明确地启用 Elasticsearch 的安全功能,如认证、授权和网络加密(TLS)。从 Elasticsearch 8.0 开始,当第一次启动 Elasticsearch 时,安全功能被默认启用和配置。
在启动时,Elasticsearch 8.0 会生成注册令牌,你可以用它来连接 Kibana 实例或在安全的 Elasticsearch 集群中注册其他节点,而无需生成安全证书或更新 YAML 配置文件。只需在启动新节点或 Kibana 实例时使用生成的注册令牌,Elastic Stack 就会为你处理所有安全配置。
如果你在 Linux ARM 或 macOS M1 等 arch64 平台上从归档中安装 Elasticsearch,那么在首次启动节点时,不会自动生成 elastic
用户密码和 Kibana 注册令牌。节点启动后,需要用 bin/elasticsearch-reset-password
工具生成 elastic
密码:
bin/elasticsearch-reset-password -u elastic
然后,用 bin/elasticsearch-create-enrollment-token 工具为 Kibana 创建一个注册令牌:
bin/elasticsearch-create-enrollment-token -s kibana
更好地保护系统索引
系统索引为 Elastic 功能存储配置和内部数据。一般来说,系统索引仅保留供这些功能内部使用。虽然有可能,但直接访问或改变系统索引会导致不稳定和其他问题。
在 Elasticsearch 8.0 中做了一些改变来保护系统索引不被直接访问。要访问系统索引的话,用户现在必须把 allow_restricted_indices
权限设置为 true
。
superuser
角色也不再给予系统索引的写入权限。因此,内置的 elastic
superuser 默认不能改变系统索引。
此后,开发者应使用 Kibana 或相关的 Elasticsearch APIs 来管理某个功能的数据,而不是访问系统索引。如果你直接访问系统索引,Elasticsearch 将在 API 响应的 header 中和废弃日志中返回警告。
新的 KNN 搜索 API
在 Elasticsearch 8.0 中推出了 KNN 搜索 API 的技术预览版。通过使用 dense_vector
字段,k-nearest neighbor(KNN)搜索可以找到与查询向量最近的 k 个向量(这是由相似度指标来衡量的)。KNN 通常被用来支持推荐引擎和基于自然语言处理(NLP)算法的相关性排名。
以前,Elasticsearch 只支持精确的 KNN 搜索,使用带向量函数的 script_score
查询。虽然这种方法保证了准确的结果,但它往往导致搜索速度缓慢,而且在大型数据集上不能很好地扩展。作为对较慢的索引和不完美的准确性的交换,新的 KNN 搜索 API 让你在更大的数据集上以更快的速度运行近似的 KNN 搜索。
为 keyword
、 match_only_text
和 text
字段节省存储空间
keyword
、 match_only_text
字段以及 text
字段受益。在使用应用程序日志的基准测试中,这一转变为 message
字段(映射为 match_only_text
)的索引大小减少了 14.4%,总体上减少了 3.5% 的磁盘占用空间。加快 geo_point
、geo_shape
和范围字段索引速度
geo_point
、geo_shape
和范围字段的内部数据结构。Lucene 级别的基准测试显示,这些字段类型的索引速度提高了 10-15%。主要由这些字段组成的 Elasticsearch 索引和数据流可能会在索引速度方面有显著的改进。另外,搜索公众号互联网架构师后台回复“2T”,获取一份惊喜礼包。PyTorch 模型支持自然语言处理(NLP)
其他变化
删除邻接 matrix 设置 #46327 (issues: #46257, #46324)
删除
MovingAverage
管道聚合 #39328删除弃用的
_time
和_term
排序 #39450删除弃用的日期历史间隔 #75000
删除
include_relocations
设置 #47717 (issues: #46079, #47443)
清理分析中的版本化弃用 #41560 (issue: #41164)
删除预先配置的
delimited_payload_filter
#43686 (issues: #41560, #43684)
除非明确禁用,否则始终添加文件和本机 Realm #69096 (issue: #50892)
默认情况下不要在 Policy 中设置 NameID 格式 #44090 (issue: #40353)
为 Realm 配置强制设置顺序 #51195 (issue: #37614)
删除连接超时 #60873 (issue: #60872)
删除对延迟状态恢复挂起主控器的支持 #53845 (issue: #51806)
删除同步刷新 #50882 (issues: #50776, #50835)
删除
cluster.remote.connect
设置 #54175 (issue: #53924)
强制合并应该拒绝设置了
only_expunge_deletes
和max_num_segments
的请求 #44761 (issue: #43102)删除每个类型的索引统计 #47203 (issue: #41059)
移除 translog 保留设置 #51697 (issue: #50775)
为
_cat/indices
删除废弃的local
参数 #64868 (issue: #62198)为
_cat/shards
删除废弃的local
参数 #64867 (issue: #62197)
默认
cluster.routing.allocation.enforce_default_tier_preference
为true
#79275 (issues: #76147, #79210)
将
prefer_v2_templates
参数默认值设为true
#55489 (issues: #53101, #55411)删除弃用的
_upgrade
API #64732 (issue: #21337)从 REST 层移除参数
include_type_name
删除索引模板中的
template
字段 #49460 (issue: #21009)
从数据路径中删除
nodes/0
文件夹前缀删除
bootstrap.system_call_filter
设置 #72848删除
node.max_local_storage_nodes
#42428 (issue: #42426)删除 Joda 依赖 #79007
删除命名日期/时间格式的驼峰式大小写 #60044
……
删除 SysV 初始化支持 #51716
删除对
JAVA_HOME
的支持 #69149需要 Java 17 才能运行 Elasticsearch #79873
正文结束
1.心态崩了!税前2万4,到手1万4,年终奖扣税方式1月1日起施行~