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

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

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

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

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

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

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

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

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

相关文章

嵌入式进阶——震动马达PWM

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 PWMB的应用实现main.c PWMB的应用 实现不同占空比下的震动的效果 拷贝依赖 STC8H_PWM.hSTC8H_PWM.cNVIC.hNVIC.cSwitch.h 实现m…

vue实现页面渲染时候执行某需求

1. 前言 在之前的项目中,需要实现一个监控token是否过期从而动态刷新token的功能,然而在登录成功后创建的监控器会在浏览器刷新点击或者是通过导航栏输入网址时销毁... 2. 试错 前前后后始过很多方法,在这里就记录一下也许也能为各位读者排…

显式锁的分类

显式锁的分类 显式锁 有很多种,从不同的角度来看,显式锁大概有以下几种分类 可重入锁 和 不可重入锁悲观锁 和 乐观锁共享锁 和 独占锁可中断锁 和 不可中断锁公平锁 和 非公平锁 1.可重入锁(Reentrant Lock)与不可重入锁 可重入…

js学习第一周

1.变量 1.变量命名规则 严格区分大小写不能以数字开头不能是关键字,保留字,不能用name用作变量名小驼峰命名法命名符号只能用下划线 _ 和doller $并且中间不能有空格 2.类型推断 JavaScript是一种动态类型的语言,这意味着你不需要在声明变…

基于JAVA GUI的JDBC连接数据库

要在Java GUI中连接数据库,需要执行以下几个步骤: 导入必要的包。你需要导入Java数据库连接相关的包,例如java.sql和javax.sql。 与数据库连接相关的类和接口。 (1)DriverManger类。DriverManager类用于加载JDBD驱动…

【每日力扣】84. 柱状图中最大的矩形 与 295. 数据流的中位数

🔥 个人主页: 黑洞晓威 😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害 84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为…

redis6.2.7 搭建一主多从

1、集群规划 节点端口角色192.168.137.1026379master192.168.137.1026380slave192.168.137.1036381slave 2、伪集群搭建 2.1 创建fake_cluster 目录存放 公共配置文件 # 进入redis目录 cd /app/apps/redis-6.2.7# 创建存放伪集群的目录 mkdir fake_cluster#复制redis.conf到…

DTC 2024回顾丨云和恩墨重塑数据库内核技术,革新企业降本增效之道

在数字化浪潮席卷全球的当下,关系型数据库作为市场主导力量的地位依然稳固。然而,面对新兴数据库与服务形态的挑战,以及企业日益强烈的降本增效需求,数据库技术的发展必须紧跟时代步伐,充分发挥资源效能以提升企业竞争…

03自动辅助导航驾驶NOA

NOA是自动辅助导航驾驶或领航辅助驾驶的缩写,其全称为Navigate On Autopilot。在设定好导航路线并进入NOA的可使用路段后,驾驶员即可开启辅助驾驶。在A点到B点的过程中,NOA能够实现自动上下匝道、自行超车、自行变道、自适应巡航等多种功能。…

【机器学习300问】99、多通道卷积神经网络在卷积操作时有哪些注意事项?

一、多通道卷积神经网络示例 还是以图像处理为例,如果你的目标不仅是分析灰度图像特性,还打算捕捉RGB彩色图像的特征。如下图,当面对一张66像素的彩色图像时,提及的“3”实际上是指红、绿、蓝三种颜色通道,形象地说&am…

Nginx R31 doc-11-Compression and Decompression 压缩与解压缩

前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 压缩与解压缩 压缩…

Java 简易操作Excel

首先,我们需要创建一个数据库表来存储这些单词及其相关信息。以下是一个简单的SQL语句示例,用于创建这样一个表: sql CREATE TABLE EnglishWords (id INT AUTO_INCREMENT PRIMARY KEY,word VARCHAR(255) NOT NULL,phonetic TEXT NOT NULL,c…

书生·浦语第二期-笔记2

课程链接:https://github.com/InternLM/Tutorial/tree/camp2 视频地址:轻松玩转书生浦语大模型趣味Demo_哔哩哔哩_bilibili 大模型及InternLM介绍 大模型:人工智能领域中参数数量巨大、拥有庞大计算能力和参数规模的模型 特点&#xff1a…

使用json-server来创建mockserver

代替mock模拟数据 1.使用mkdir vue3-ts-server 创建目录 2.npm init -y 生成package.json的依赖配置文件 详见json-server - npm 3.cnpm install json-server -S 4.目录结构是data,public,src{app.js , router.js , db.js &…

【Linux杂货铺】进程通信

目录 🌈 前言🌈 📁 通信概念 📁 通信发展阶段 📁 通信方式 📁 管道(匿名管道) 📂 接口 ​编辑📂 使用fork来共享通道 📂 管道读写规则 &…

初中英语优秀作文分析-002Who stole the cupcake-谁偷了纸杯蛋糕?

更多资源请关注纽扣编程微信公众号 记忆树 1 One Sunday afternoon, Leslie was at home with her kids, 3-year-old Angel, 6-year-old Carl, and 7-year-old Tony. 翻译 一个周日的下午,Leslie和她的孩子们在家,他们是3岁的Angel,6岁的…

镜子摆放忌讳多

镜子是我们日常生活中不可或缺的物品。在风水中,镜子的作用非常多,能够起到一定的作用。镜子的摆放位置也是非常有讲究的,摆放不好会直接影响到家人的事业、财运、婚姻乃至健康等诸多方面。 第一个风水忌讳,镜子对大门。大门的正前…

Linux防火墙之iptables(二)

一.SNAT策略概述 1.SNAT 策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet(私有IP不能在Internet中正常路由) 局域共享上网 2.SNAT 策略的原理 源地址转换,Source Network Address Translation 修改数据包的源地址 未作SNAT转换…

用three.js+echarts给公司写了一个站点数据大屏系统经验总结

时间过的好快,参加公司的新项目研发快一年了,五一机器人项目首秀,我们遇到了高并发集中下单情景,然后海量数据处理场景来了,给我在后端领域的高并发实践业务上画上了漂亮的一笔经验。人都是在磨练中成长,我很感谢这次给我的机会,虽然有点累,但也有点小成就。正好现在有…