ES 8.x新特性一览(完整版)

news2024/12/26 14:04:55

一、看点

在 2022 年 2 月 11 日,Elasticsearch(ES)正式发布了 8.0 版本,而截止到 2023 年 10 月,历经一年半时间,ES官方已经连续发布了多个版本,最新版本为 8.10.4。这一系列的更新引入了众多引人注目的新特性,按照功能模块和重要性进行整理,下面我们将介绍一些核心且引人瞩目的新功能。整体有以下看点:

  • 向量检索
  • 可以在集群中嵌入NLP模型
  • ES适合做时序数据处理
  • 开箱即用的安全配置功能
  • 底层存储优化
  • 更丰富的地图搜索功能

二、最引人注目的就是向量检索

在 8.0版本 中,提供新的kNN 搜索 API。这是一个里程碑的版本,在此之前,ES虽然支持向量检索,但是是以脚本的方式提供的。虽然此方法可以保证准确的结果,但它通常会导致搜索速度缓慢,并且无法很好地适应大型数据集。它的性能是极低的。在8.0中引入了 kNN search API | Elasticsearch Guide [8.0] | Elastic的技术预览版。使用dense_vector字段k-nearest neighbor (kNN) search | Elasticsearch Guide [8.0] | Elastic可找到与查询向量最接近的k个向量(通过相似性度量来衡量)。kNN 通常用于为推荐引擎提供支持,并根据自然语言处理 (NLP) 算法对相关性进行排名。以前,Elasticsearch 仅支持使用script_score带有向量函数的查询进行精确的 kNN 搜索。虽然此方法可以保证准确的结果,但它通常会导致搜索速度缓慢,并且无法很好地适应大型数据集。作为索引速度较慢和准确性不完美的代价,新的 kNN 搜索 API 允许您以更快的速度对更大的数据集运行近似 kNN 搜索。

在 8.4版本中,把knn搜索加入到search API中,以支持 ANN 搜索。它由与旧 _knn_search端点相同的 Lucene ANN 功能提供支持。该knn选项可以与其他搜索功能(例如查询和聚合)结合使用。

在 8.7版本允许多个 KNN 搜索子句。某些向量搜索场景需要使用几个 kNN 子句进行相关性排名,例如,当基于多个字段进行排名时,每个字段都有自己的向量,或者当文档包含图像向量和文本向量时。用户可能希望获得基于所有这些 kNN 子句的组合的相关性排名。

在 8.8版本,将 Introducing Elastic Learned Sparse Encoder: Elastic’s AI model for semantic search — Elastic Search Labs 模型引入到我们的机器学习模型库中,您可以开箱即用。ELSER 通过启用语义搜索来提高搜索结果的相关性。这种搜索方法考虑单词的含义,而不是仅仅依赖字面术语。ELSER 是一种预训练的域外稀疏向量模型,无需对特定源数据进行微调。它从一开始就为您提供相关的搜索结果。并且在此版本中,还提升了KNN检索语法,加入了similarity参数,允许过滤给定相似性之外的最近邻结果。

在8.9版本中text_embedding query_vector_builderkNN 搜索的扩展普遍可用。

在8.10版本中,启用跨段并行 knn 搜索,使得 knn 查询对由多个段组成的分片更快,来优化knn搜索的性能。

三、ES 开始支持 NLP模型能力

在8.0版本中可以上传在 Elasticsearch 之外训练的PyTorch模型,并在摄取时使用它们进行推理。第三方模型支持将现代自然语言处理 (NLP)和搜索用例引入 Elastic Stack,例如:

  • Fill-mask
  • Named entity recognition (NER)
  • Text classification
  • Text embedding
  • Zero-shot classification

在8.2版本中,可以统计数据 NLP 推理速度。有三项新统计数据是:

  • 每分钟峰值吞吐量
  • 最后一分钟吞吐量
  • 平均推理时间毫秒最后分钟

目的是表明推理当前是否满足要求,或者集群是否需要扩展以满足需求。最后一分钟的统计数据可以快速反馈以显示机器学习节点扩展的效果。

四、发布时间序列数据流(TSDS)功能

在 8.8 版本中,Elasticsearch 提供对时间序列数据流 (TSDS) 索引的支持。TSDS 索引是包含时间序列指标数据作为数据流一部分的索引。Elasticsearch 将传入文档路由到 TSDS 索引中,以便特定时间序列的所有文档都位于同一分片上,然后按时间序列和时间戳对分片进行排序。这种结构有几个优点:

1.同一时间序列的文档在分片上彼此相邻,因此在磁盘上彼此相邻存储,因此操作系统页面更加同质并且压缩效果更好,从而大幅降低 TCO。

2.时间序列的分析通常涉及比较每两个连续的文档(样本)、检查给定时间窗口中的最后一个文档等,当下一个文档可能位于任何分片上并且实际上位于任何索引上时,这是相当复杂的。按时间序列和时间戳排序可以改进分析,无论是在性能方面还是在我们添加新聚合的能力方面。

3.最后,作为指标数据时间序列索引生命周期管理的一部分,Elasticsearch 启用下采样操作。当对索引进行下采样时,Elasticsearch 会保留一个文档,其中包含时间序列中每个时间段的统计摘要。然后,支持的聚合可以在数据流上运行,并包括下采样索引和原始数据索引,而用户无需意识到这一点。还支持对下采样索引进行下采样,以达到更粗略的时间分辨率。

Time series data stream (TSDS) | Elasticsearch Guide [8.7] | Elastic是一项用于优化时间序列数据的 Elasticsearch 索引的功能。这涉及对索引进行排序以实现更好的压缩并使用合成 _source 来减小索引大小。因此,TSDS 指数明显小于包含相同数据的非时间序列指数。TSDS 对于管理大量时间序列数据特别有用。并且提供了采样优化算法,可减少 Elasticsearch 时间序列索引中存储的文档数量,从而缩小索引并改善查询延迟。这种优化是通过预先聚合时间序列索引来实现的,使用 time_series 索引模式来识别时间序列。下采样被配置为 ILM 中的一项操作,使其成为管理 Elasticsearch 中大量时间序列数据的有用工具。

五、开箱即用的安全配置功能

在8.0版本中,ES官方为我们提供了开箱即用的安全功能。在此之前,都要经过一系列复杂的操作,才能拥有安全能力。

在没有安全性的情况下运行 Elasticsearch 会使您的集群暴露给任何可以向 Elasticsearch 发送网络流量的人。在以前的版本中,您必须显式启用 Elasticsearch 安全功能,例如身份验证、授权和网络加密 (TLS)。从 Elasticsearch 8.0 开始, 首次启动 Elasticsearch 时Start the Elastic Stack with security enabled | Elasticsearch Guide [8.0] | Elastic

启动时,我们会生成注册令牌,您可以使用该令牌连接 Kibana 实例或在安全的 Elasticsearch 集群中注册其他节点,而无需生成安全证书或更新 YAML 配置文件。只需在启动新节点或 Kibana 实例时使用生成的注册令牌,Elastic Stack 就会为您处理所有安全配置。开箱即用,您将得到:

  • 用户认证
  • 用户授权
  • 使用 TLS 进行加密的节点间通信
  • Elasticsearch 和 Kibana 之间使用 TLS 进行加密通信

需要新的注册令牌吗?使用该 elasticsearch-create-enrollment-token | Elasticsearch Guide [8.0] | Elastic 工具为 Elasticsearch 节点和 Kibana 实例创建注册令牌。

六、底层存储优化与性能提升

1.keyword、match_only_text、 和text字段的存储节省

在8.0版本中更新了倒排索引(一种内部数据结构),以使用更节省空间的编码。这种变化将有利于keyword各个领域、 match_only_text各个领域,以及在较小程度上的text各个领域。在我们使用应用程序日志的基准测试中,这意味着字段索引大小message(映射为match_only_text)减少了 14.4%,磁盘占用空间总体减少了 3.5%。

2.更快地索引geo_point、geo_shape和范围字段

在8.0版本中优化了多维点的索引速度,多维点是用于geo_pointgeo_shape和范围字段的内部数据结构。Lucene 级基准测试报告称,这些字段类型的索引速度提高了 10-15%。主要由这些字段组成的 Elasticsearch 索引和数据流可能会显着提高索引速度。

3.管道处理性能提升

在8.3版本中通过避免(深度)递归,改进了具有同步处理器的管道的管道执行逻辑。在我们模拟日志记录用例的夜间基准测试中,这导致摄取管道上花费的 CPU 时间减少了 10%,整体摄取速度提高了 3%。

4.filters/range/date_histogram aggs 性能提升

在8.4版本中,在没有子聚合时,对聚合进行提速。这非常常见,例如,Kibana 的发现选项卡顶部的直方图没有date_histogram任何子聚合。在我们的集会测试中,该特定聚合速度加快了约 85%,从 250 毫秒降至 30 毫秒。

5.使用显式“_id”改进了 get、mget 和索引的性能

在8.7中,将布隆过滤器的误报率_id从约 10% 降低至约 1%,从而减少了段中不存在术语时的 I/O 负载。这可以提高通过 检索文档时的性能_id,这种情况发生在执行 get 或 mget 请求时,或者发出_bulk提供显式 _id 的请求时。

6.Encode using 40, 48 and 56 bits per value

在8.8版本中,做了编码的提升。

使用编码如下: * 对于每个值采用 [33, 40] 位的值,使用每个值 40 位进行编码 * 对于每个值采用 [41, 48] 位的值,使用每个值 48 位进行编码 * 对于采用 [ 49, 56] 每个值位,使用每个值 56 位进行编码

这是对 ForUtils 使用的编码的改进,ForUtils 不对每个值超过 32 位的值应用任何压缩。

请注意,每个值的 40、48 和 56 位表示字节的精确倍数(每个值 5、6 和 7 个字节)。因此,我们总是使用比长值所需的 8 个字节少 3、2 或 1 个字节的值来写入值。

看看存储字节的节省,对于 128 个(长)值的块,我们通常会存储 128 x 8 字节 = 1024 字节,而现在我们有以下内容: * 每个值 40 位:写入 645 字节而不是 1024 字节,节省379 字节 (37%) * 每个值 48 位:写入 772 字节而不是 1024,节省 252 字节 (24%) * 每个值 56 位:写入 897 字节而不是 1024,节省 127 字节 (12%)

还将压缩应用于规格指标,假设每个值超过 32 位的压缩值对于浮点值效果很好,因为浮点值的表示方式(IEEE 754 格式)。

7.并发索引和搜索下更好的索引和搜索性能

在8.9版本中,提升并发索引和搜索的性能。当像匹配短语查询或术语查询这样的查询针对常量关键字字段时,我们可以跳过分片上的查询执行,其中查询被重写以不匹配任何文档。我们利用包括常量关键字字段的索引映射,并以这样的方式重写查询:如果常量关键字字段与索引映射中定义的值不匹配,我们将重写查询以匹配任何文档。这将导致分片级别请求在数据节点上执行查询之前立即返回,从而完全跳过分片。在这里,我们利用尽可能跳过分片的功能来避免不必要的分片刷新并改善查询延迟(通过不执行任何与搜索相关的 I/O)。避免这种不必要的分片刷新可以改善查询延迟,因为搜索线程不再需要等待不必要的分片刷新。不匹配查询条件的分片将保持搜索空闲状态,索引吞吐量不会受到刷新的负面影响。在引入此更改之前,查询命中多个分片,包括那些没有与搜索条件匹配的文档的分片(考虑使用索引模式或具有许多支持索引的数据流),可能会导致“分片刷新风暴”,从而增加查询延迟搜索线程等待所有分片刷新完成后才能启动和执行搜索操作。引入此更改后,搜索线程只需等待包括相关数据的分片刷新完成。请注意,分片预过滤器的执行以及重写发生的相应“可以匹配”阶段取决于所涉及的分片总数以及是否至少有一个分片返回非空结果(请参阅 pre_filter_shard_size设置为了解如何控制这种行为)。Elasticsearch 在所谓的“可以匹配”阶段对数据节点进行重写操作,利用这样一个事实:此时我们可以访问索引映射并提取有关常量关键字字段及其值的信息。这意味着我们仍然将搜索查询从协调器节点“扇出”到相关数据节点。在协调器节点上不可能基于索引映射重写查询,因为协调器节点缺少索引映射信息。

七、更高效的快照

8.5版本中,快照操作的开销已显着减少。快照现在以更高效的顺序运行,并且需要的网络流量比以前少得多。

八、更丰富的地图搜索功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1150734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【多线程面试题二十】、 如何实现互斥锁(mutex)?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:如何实现互斥锁&#xf…

JavaSE20——IO流

IO流 1 Java IO流 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行 I(Input): 输入流指的是将数据以…

世界前沿技术发展报告2023《世界航空技术发展报告》(七)机载系统与武器技术

(七)机载系统与武器技术 1.机载系统技术1.1 美国推进商用5G技术在航空装备中的应用1.2 人工智能技术在航空中的应用日益增多1.3 美国空军研究实验室推出综合座舱感知技术1.4 美国空军为固定翼飞机驾驶员选定新一代头盔1.5 美国DARPA探索通过机载光能量中…

用LibreOffice在excel中画折线图

数据表格如下。假设想以x列为横坐标,y1和y2列分别为纵坐标画折线图。 选择插入-》图表: 选择折线图-》点和线,然后点击“下一步”: 选择:列中包含数据序列,然后点击完成(因为图挡住了数据…

【多线程面试题十五】、synchronized可以修饰静态方法和静态代码块吗?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:synchronized可以修饰静…

生物信息学分析-blast序列比对及结果详细说明

1. 软件说明 Blast是一种基于序列比对的分析工具,可以用于寻找生物序列之间的同源性,它的全称是Basic Local Alignment Search Tool。 Blast有多种版本和用途,最常见的是基于Web的Blast和本地安装的Blast程序。Web版Blast可以直接在NCBI网站…

小白如何在一个月写一篇论文(中文核心,SCI)

小白如何半年发3篇sci的我教你如何快速“水”一篇sci论文_哔哩哔哩_bilibili 计算机视觉,cv领域 半年发3篇sci的我教你如何快速“水”一篇sci论文 计算机视觉(辅导 SCI EI 核心) 微信:whbwqq123或主页加up 小白如何快速写出一篇论文并成功发表&…

图像处理与计算机视觉--神经网络--手动计算

文章目录 1.简单感知器分类模型1.1.简单感知器分类模型介绍1.2.简单感知器分类模型实现 2线性神经元分类模型2.1.线性神经元分类模型介绍2.2.线性神经元分类模型实现 3.基于遍历学习的神经网络计算模型3.1.基于遍历学习的神经网络计算模型介绍3.2.基于遍历学习的神经网络计算模…

Windows原生蓝牙编程 第二章 选取设备输入配对码并配对【C++】

蓝牙系列文章目录 第一章 获取本地蓝牙并扫描周围蓝牙信息并输出 第二章 选取设备输入配对码并配对 文章目录 前言头文件一、选择想要配对的设备并设置配对码1.1 设置配对码1.2 选择设备并配对 二、全部代码三、测试结果总结 前言 接着第一章,我们已经把扫描到的蓝…

Composition API的引入

目录 全局API的移除和替代 插件的改进 TypeScript支持的增强 优势 劣势 总结 Vue.js 3.x版本引入了Composition API,这是一个全新的API风格,旨在提高代码的可读性和重用性。Composition API使我们可以根据逻辑相关性组织代码,而不是按照…

3.3每日一题(变量可分离方程)

1、判断类型选方法:等式中分别提一个x、y出来,形成了x与y相乘的等式;为变量可分离类型 2、不一定非得把y解出来,化成上述的等式即可(为隐函数的方程解) 注:等式不定积分后记得+一个…

Oracle Exadata X7-2掉电宕机导致集群无法启动处理过程

文章目录 前言一、当前的状态是什么?二、集群启动异常怀疑对象1.排查心跳网络异常ping自己私有IP延迟高ping其它主机私有IP不通 2.是否发生过重启 三、日志信息收集ocssd.trc集群crs日志cell的griddisk状态及报错 四、IB交换机的问题排查处理五、紧急恢复业务在IB完…

订水商城H5实战教程-05权限控制

目录 1 判断用户是否登录2 创建事件流3 获取不到Userid的问题4 权限控制整体效果 我们上一篇讲解了用户注册的功能,当用户注册完毕的时候再次打开小程序的时候就需要验证权限。权限分为两类,第一类是判断用户是否注册,第二类是当前用户具备什…

什么是鉴权?一篇文章带你了解postman的多种方式

一、什么是鉴权? 鉴权也就是身份认证,就是验证您是否有权限从服务器访问或操作相关数据。发送请求时,通常必须包含相应的检验参数以确保请求具有访问权限并返回所需数据。通俗的讲就是一个门禁,您想要进入室内,必须通…

windows应用软件扫描报告 不告谱 要钱

chatGPT开路,帮找。 当你想要查找Windows软件的漏洞而不涉及查看源代码时,你可以使用一些专门设计用于扫描漏洞的工具。这些工具通常会检查已安装的软件和操作系统的漏洞,并提供建议或修补程序。以下是一些可以用于查找Windows软件漏洞的工具…

数据结构之顺序表详解

hello,大家好,今天的内容是关于顺序表的,其实之前也发过文章,但是那个时候水平还是差了一点,有些地方不是很详细,这次会把每个点都讲清楚,也当给自己在复习一遍。 顺序表在本质上就是数组&#…

【智能座舱系列】- 深度解密小米Hyper OS,华为HarmonyOS区别

上一篇文章《小米的澎湃OS到底牛不牛?与鸿蒙系统之间差距有多大》,从多个方面比较了小米Hyper OS 与 华为HarmonyOS的区别,本篇文章继续从架构层面深度解读两者本质的区别。 小米澎湃OS是“以人为中心,打造人车家全生态操作系统”,该系统基于深度进化的Android以及自研的V…

SpringMVC Day 07 : 表单验证

前言 表单验证在Web开发中是非常常见和重要的一部分,它用于确保用户提交的数据符合预期的规则和限制。 通过表单验证,我们可以有效地捕获并处理用户输入中的错误或不正确的数据,从而提高应用程序的数据质量和用户体验。在本教程中&#xff…

Gerrit 事件监听实现

环境 Centos 7.9 Gerrit 2.15 Gerrit 2.15容器搭建 docker-compose.yml version: 3 services:gerrit:image: gerritcodereview/gerrit:2.15ports:- 8080:8080- 29418:29418volumes:- ./review_site:/var/gerrit/review_siteenvironment:- CANONICAL_WEB_URLhttp://localhos…

.jnlp

首先配置电脑的java环境。 百度搜索jre下载,会有很多结果,一般选择官网进行下载。 下载正确的jre版本。 我的电脑是windows 64位,根据你自己电脑的情况选择版本进行下载。不懂自己电脑是多少位的可以看下一步。 查看电脑是64位还是32…