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

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

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

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

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

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

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

相关推荐
二爷记1 小时前
QXQ3真i9级CPU是捡漏还是踩坑!i9-12900 ES版CPU值得入手吗?
大数据·elasticsearch·搜索引擎·全文检索
伊织code2 小时前
SAM 2 (Segment Anything ):图像与视频通用分割模型
sam·图像·视频·模型·segment·anything·分隔
何双新2 小时前
L3-3、从单轮到链式任务:设计协作型 Prompt 系统
服务器·搜索引擎·prompt
Hello.Reader2 小时前
在 Ubuntu 环境为 Elasticsearch 引入 `icu_tokenizer
ubuntu·elasticsearch·jenkins
jack_xu11 小时前
高频面试题:如何保证数据库和es数据一致性
后端·mysql·elasticsearch
技术项目引流12 小时前
elasticsearch查询中的特殊字符影响分析
大数据·elasticsearch·搜索引擎
盈达科技12 小时前
【盈达科技】GEO(生成式引擎优化)底层逻辑
搜索引擎
yangmf204017 小时前
使用 Logstash 迁移 MongoDB 数据到 Easysearch
java·elasticsearch·搜索引擎
南客先生19 小时前
海量聊天消息处理:ShardingJDBC分库分表、ClickHouse冷热数据分离、ES复合查询方案、Flink实时计算与SpringCloud集成
java·clickhouse·elasticsearch·flink·springcloud·shardingjdbc
MaYuKang1 天前
「ES数据迁移可视化工具(Python实现)」支持7.x索引数据互传
大数据·数据库·python·mysql·elasticsearch