Elasticsearch的Index sorting 索引预排序会导致索引数据的移动吗?

索引预排序可以确保索引数据按照指定字段的指定顺序进行存储,这样在查询的时候,如果固定使用这个字段进行排序就可以加快查询效率。

我们知道数据写入的过程中,如果需要确保数据有序,可能需要在原数据的基础上插入新的数据,这样可能会涉及到数据的移动。可以想象一个链表结构,如果需要确保它的有序性,在插入新数据的时候需要对链表节点进行移动。

但是我们知道,Elasticsearch的Segment段数据是不可变的,这是为了写入的时候可以进行顺序写而提高磁盘的IO效率,同时可以提高段文件的缓存命中率,不至于一条数据被修改,整个段的数据缓存都要失效的情况。

既然段数据是不可变的,Index sorting 也就是索引预排序是怎么确保索引存储是有序的呢?

要理解这个问题就得从Elasticsearch的写入原理说起:

首先通过refresh在内存中生成新的Segment段时,由于段数据是此时生成的,很容易确保段数据是有序的,此外在段合并的过程中涉及到端数据的重整,这时候也可以确保合并后的新段的数据是有序的。因此Elasticsearch可以确保每个段的数据都是有序的,而最终查询数据的时候也是从Segment段上获取数据的,在已经排好序的Segment段上获取数据再整体排序,代价就减少了。

相关推荐
媒体人88818 小时前
E-E-A-T²增强框架:AI时代GEO生成式引擎优化的信任破局之道
大数据·人工智能·搜索引擎·生成式引擎优化·geo优化
Albert Edison20 小时前
【Git】分支管理
大数据·git·elasticsearch
GEO AI搜索优化助手21 小时前
未来视野:空间搜索时代的品牌增长新范式
人工智能·搜索引擎·生成式引擎优化·ai优化·geo搜索优化
愤怒的苹果ext21 小时前
Flink CDC MySQL同步到Elasticsearch
mysql·elasticsearch·flink·cdc·同步数据
CNRio1 天前
Day 43:Git的高级技巧:使用Git的rebase简化提交历史
大数据·git·elasticsearch
技术小泽1 天前
搜索系统架构入门篇
java·后端·算法·搜索引擎
何中应1 天前
ES可视化连接工具的使用
大数据·elasticsearch·搜索引擎
老陈头聊SEO1 天前
利用AI技术优化SEO关键词的创新策略与市场分析
其他·搜索引擎·seo优化
Elastic 中国社区官方博客1 天前
Elasticsearch:在 Streams 中使用 ML 自动化 log 解析
大数据·运维·elk·elasticsearch·搜索引擎·自动化·全文检索
oMcLin1 天前
如何在Debian 11服务器上部署并优化高性能Elasticsearch集群,处理PB级数据?
服务器·elasticsearch·debian