Elasticsearch官方文档翻译-Whats new in 8.0-8.0更新内容
本系列文章翻译ES官方8.0版本文档。本章对应内容地址 Whats new in 8.0
因为水平有限,翻译内容难免存在错漏,欢迎大家指出
与7.x版本REST API的兼容性
本次REST API方面,8.0版本引入了一些破坏性改动。尽管升级并适应这些变化非常重要,但是在一次性里找出并升级程序中所有相关的API调用无疑是非常痛苦且存在风险的。因此,我们提供了兼容7.x版本API的请求头,来减少升级带来的麻烦。在大多数时候只要带上兼容请求头,既可以使用7.x的API接口请求8.0的服务端。
兼容7.x的请求头会长期支持,但是我们仍然建议使用8.0版本的API接口。
更多有关兼容请求的信息,请参考REST API compatibility
支持安全相关特性并提供了默认配置
将Elasticsearch集群暴露出去且不设置安全策略意味着网络上的所有用户都可以访问集群。在之前的版本中需要手动进行安全相关的配置,如设置身份认证,网络加密等。从8.0版本开始安全策略在服务启动时就说默认开启的。
在服务启动时,会自动生成一个注册令牌,Kibana连接集群或是新的节点加入集群时只需要使用这个令牌就可以,而无需设置证书或修改YML文件。只要使用这个令牌,Elastic Stack就会处理好所有的安全配置。在这个过程中会有如下特性:
- 用户认证
- 用户权限
- ES节点间网络加密传输-TLS
- Kibana和ES服务端之前加密传输-TLS
如果需要一个新的令牌,可以使用elasticsearch-create-enrollment-token
生成。
为系统索引提供更好的保护
系统索引为Elastic保存了配置和内部数据。通常系统索引只提供给内部功能使用,因此某些情况下对这些索引的访问和修改会导致服务出现不稳定出现一些未知的问题。
在8.0版本,为了更好的保护系统索引,我们做了一些改动,如果想要直接访问系统索引你必须设置allow_restricted_indices
为true。对应超级管理员角色也不能直接访问系统索引,对应elastic内置的超级用户也是如此。
请尽可能的使用Kibana或是REST API进行数据的管理,不要直接访问或操作系统索引。如果你尝试直接访问系统索引,Elastic将会返回warning并给出相应的日志提示。
新的KNN搜索API
在8.0版本中我们引入可kNN搜索的预览版。 kNN search API
在kNN搜索中使用dense_vector属性会找到同查询向量前k个最相似的向量组。kNN搜索基于自然语言处理(NLP)算法,可使用在推荐功能中。
在之前的版本中,Elasticsearch只支持使用script_score作为向量的精确kNN搜索,这种方式的结果更准确,但是速度较慢不适合大量数据的搜索。新的kNN搜索在对大量数据时使用近似kNN搜索能提高搜索的速度,但是为降低搜索的准确度。
减少keyword,match_only_text和text字段的存储空间
为了更好的利用空间,我们更新了倒排索引和内部的数据结构,这些改动将会减少keyword,match_only_test和text类型数据的空间占用。在我们的基准测试中,整体的index大小减少了14.4%,整体的磁盘空间占用减少了3.5%。
提升geo_field,geo_shape和rang类型的写入(indexing)速度
我们使用一个内部的数据结构来保存geo_field,geo_shape和rang类型数据,优化了多维数据的写入速度,Lucene级别的测试显示这些类型字段的写入速度提升了10-15%。Elasticsearch中包含这些类型字段的索引的写入速度都会得到提升。
PyTorch模块支持自然语言处理(NLP)