在完全兼容开源Elasticsearch(ES)内核的所有特性基础上,阿里云ES在监控指标多样化、线程池、熔断策略优化、查询与写入性能优化等诸多方面,深度定制了AliES内核引擎。基于阿里云Elasticsearch团队在多种应用场景下所积累的丰富经验,提升集群稳定性、增强性能、优化成本和丰富监控运维功能。本文介绍AliES的内核版本及重点优化的特性。
ES 7.16.2版本
1.7.0内核版本发布说明
新增aliyun-timestream时序增强插件,支持TimeStream时序类型索引的增删改查,降低时序场景门槛。详细信息,请参见TimeStream时序增强引擎介绍。
支持使用PromQL查询数据。详细信息,请参见基于TimeStream对接Prometheus+Grafana实现可观测性。
ES 7.10.0版本
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内核版本发布说明
在aliyun-codec插件中新增source复用docvalue特性,进一步降低索引大小及成本,详细信息请参见使用aliyun-codec插件。
更新aliyun-qos插件2.0版本,支持更细粒度的限流类型和限流参数设置,详细信息请参见使用集群限流插件(aliyun-qos)。
1.5.0内核版本发布说明
支持aliyun-codec插件,增强内核压缩性能,详细信息请参见使用aliyun-codec插件。
修复search_as_you_type漏洞,详细信息请参见search_as_you_type。
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内核版本发布说明
在使用以上功能时,需要先将内核版本升级至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内核版本发布说明
主节点调度性能提升10倍,支持调度更多分片数。
写入性能提升10%,降低translog落盘锁的开销。