全部产品
Search
文档中心

检索分析服务Elasticsearch版:内核版本发布记录

更新时间:Nov 01, 2024

在完全兼容开源Elasticsearch(ES)内核的所有特性基础上,阿里云ES在监控指标多样化、线程池、熔断策略优化、查询与写入性能优化等诸多方面,深度定制了AliES内核引擎。基于阿里云Elasticsearch团队在多种应用场景下所积累的丰富经验,提升集群稳定性、增强性能、优化成本和丰富监控运维功能。本文介绍AliES的内核版本及重点优化的特性。

ES 7.16.2版本

1.7.0内核版本发布说明

ES 7.10.0版本

1.12.0内核版本发布说明

  • 新增、优化特性

    • search:

      • 增加同义词插件。

      • 在保持原有均衡能力的情况下增加主分片均衡功能。

      • 增加wildcard,prefix查询参数长度限制能力。

      • 基于DocValue优化keyword类型terms、prefix等复杂查询,低命中率场景下查询性能提升80%。

      • 基于DocValue优化数值类型term、terms查询,低命中率场景下查询性能提升80%。

      • 基于lazyload策略优化BKD term/terms场景的查询性能,查询性能提升30%。

  • Bug修复

    • 优化存储层任务管理,解决偶发出现RPC通信卡住的问题。

    • 优化数据复制流程,避免副本节点出现fail engine。

    • 优化副本晋升流程,避免出现主/副本索引文件内容不一致的问题。

1.10.0内核版本发布说明

  • 新增、优化特性

    • Store/Snapshot:

      优化LuceneVerifyIndexOutput实现,提升索引恢复速度。更多信息,请参见ES pull 96975

    • Cluster Coordination

      持久化任务不再引用ClusterState,大规模集群中会导致master节点内存升高,为避免大规模集群选主超时,cluster.election.initial_timeout默认值从100 ms改成1 s。更多信息,请参见ES pull 90724

    • Search

      • 增加端到端查询超时功能,有效控制查询整体耗时,支持在超时情况下返回部分结果。

      • 访问日志增加部分字段。

  • Bug修复

    • Lucene:

      修复Lucene Merge引用的DV update索引文件,被并发flush操作删除的问题。更多信息,请参见Lucene

1.9.0内核版本发布说明

  • 新增、优化特性

    • 内核增强版并发查询框架重构和优化:

      • 优化并发框架,降低查询耗时。

      • 实现了内存复用,优化JVM内存熔断和GC开销问题,充分提高资源利用。

      • 降低原文fetch并发中fetch阶段的耗时。例如,size为10000的场景,fetch阶段可以降低6~10倍耗时,整体耗时可以降低50%。

      • 适配更多的聚合查询,包括PercentilesAggregation、PercentileRanksAggregation、SamplerAggregation、DiversifiedAggregation、SignificantTextAggregation、GeoDistanceAggregation、GeoHashGridAggregation、GeoTileGridAggregation、GeoBoundsAggregation、GeoCentroidAggregation、ScriptedMetricAggregation。

    • 端到端的访问日志增加查询耗时、traceId等字段,可以使用traceId串联查询流程。

    • 通过优化自定义原文索引结构和mapping解析,实现原文写入优化,使原文写入性能提升一倍。

  • 通过以下代码开启Cache,解决某些场景中主查询少,子查询多,而未对子查询开启缓存的问题。

    PUT _cluster / settings 
    {
    	"persistent": {
    		"search.query_cache_get_wait_lock_enable": "true",
    		"search.query_cache_skip_factor": "200000000"
    	}
    }
  • 优化knn场景主副本分片点位不一致问题。

  • Bug修复

    • 修复蓝绿变更时,当节点上面Shard迁移后, 执行GET _cat/node异常的问题。

1.8.0内核版本发布说明

新增aliyun-timestream时序增强插件,支持TimeStream时序类型索引的增删改查,降低时序场景门槛,并支持使用PromQL查询数据以及按照InfluxDB的行协议写数据。详细信息请参见TimeStream时序增强引擎介绍基于TimeStream对接Prometheus+Grafana实现可观测性TimeStream集成InfluxDB写协议接口

1.7.0内核版本发布说明

  • 新增特性

    Analyticsearch查询优化上线,基于日志检索插件实现查询性能大幅提升,具体说明如下:

    • 日志检索场景,例如Kibana Discover查询加速,优化索引合并策略及Date_histogram执行计划策略,无条件或单条件查询性能提升6倍以上(日增量>1 TB数据量的场景下,分钟级查询可优化至5s内)。

    • 优化并发查询,实现召回过程的并发,提高资源利用率,日志场景召回阶段平均耗时降低50%。

    • 只读小segment在Force Merge前持续合并,相比合并前查询性能提升20%。

  • 性能优化

    • 协调节点和数据节点间写入请求传输使用轻量级压缩算法LZ4,节点网络带宽开销降低30%。

    • 优化Force Merge任务的并发粒度至分片级别,降低Force Merge耗时。

    • 支持配置原文大块压缩并优化ZSTD压缩算法参数,原文大小降低8%;通过优化Backports lucene postings pfor编码,索引大小降低3%。

  • Bug修复

    • 修复aliyun-codec插件中,source_reuse_doc_values特性不支持带.的字段名问题。

1.6.0内核版本发布说明

1.5.0内核版本发布说明

1.4.0内核版本发布说明

  • 更新aliyun-knn插件,优化写入性能,使写入性能相对于老版本有所提升;同时支持script查询,并集成了smind硬件优化后的指令,丰富了向量检索功能。

  • 增强aliyun-qos分布式限流插件功能,提供了集群级别的限流能力,使您无需再关注内部节点的实际拓扑和负载情况,各节点之间能够自适应分配流量比例,易用性与稳定性相比单机版QoS有显著提升。

1.3.0内核版本发布说明

  • 提供慢查询隔离池,降低异常查询对集群稳定性的影响。

  • 提供gig流控插件,实现机器异常秒级切流,降低坏节点导致查询抖动的概率。

    说明

    在商业版7.10.0中,gig流控插件默认集成在aliyun-qos集群限流插件中(默认已安装),不需要单独安装。

  • 支持通用物理复制功能,提高有副本索引的写入性能。

  • 支持时序查询剪枝功能,提高含时序字段范围的查询性能。

  • 支持查询access.log,包括请求时间、客户端来源和请求内容等,可用于问题排查和请求分析。

  • 主节点调度性能提升10倍,支持调度更多分片数。

ES 6.7.0版本

1.3.0内核版本发布说明

  • 提供慢查询隔离池,降低异常查询对集群稳定性的影响。

  • 提供gig流控插件,实现机器异常秒级切流,降低坏节点导致查询抖动的概率。

重要

在使用以上功能时,需要先将内核版本升级至1.3.0版本,支持升级的版本包括:通用商业版0.3.0、1.0.2、1.3.0,不支持1.0.1。

1.2.0内核版本发布说明

  • 支持通用物理复制功能,提高有副本索引的写入性能。

  • 支持时序查询剪枝功能,提高含时序字段范围的查询性能。

  • 支持主键查询去重优化,带主键文档的写入性能提升10%。

  • 支持堆外FST,单节点支持存储最大20 TB的索引数据。

1.0.2内核版本发布说明

支持查询access.log,包括请求时间、客户端来源、请求内容等,可用于问题排查和请求分析。

1.0.1内核版本发布说明

支持配置JVM熔断策略,JVM达到95%后会拒绝请求保护集群,参数设置如下:

  • indices.breaker.total.use_real_memory:默认为false。

  • indices.breaker.total.limit:默认为95%。

0.3.0内核版本发布说明