当前位置: 首页 > news >正文

【吃透 Elasticsearch 的核心原理】学习步骤

要真正,需深入以下关键机制(结合最新技术演进):


一、倒排索引机制

  1. 核心三要素
    • Term Index:FST 结构加速前缀匹配(如 ap* 查询)
    • Term Dictionary:存储所有 token 及统计信息(如词频)
    • Posting List:采用 Roaring Bitmaps 压缩存储文档 ID 列表(参考)
  2. 动态合并策略
    • Segment 合并时的 TieredMergePolicy 算法
    • 倒排链的跳跃表(Skip List)优化范围查询

二、分布式架构原理

  1. 分片(Shard)机制
    • 主分片与副本分片的 写扩散/读负载均衡 策略
    • 路由算法:[hash(_routing) % number_of_shards](file://D:\code\elasticsearch\server\src\main\java\org\elasticsearch\cluster\routing\IndexRouting.java#L434-L436)(源码级)
  2. 集群协调
    • Zen Discovery 协议与 Raft 算法的对比(7.x 后改进)
    • 脑裂检测:discovery.zen.minimum_master_nodes 公式推导

三、Lucene 核心机制

  1. 段合并(Segment Merge)
    • IndexWriter 的 [mergePolicy](file://D:\code\elasticsearch\server\src\main\java\org\elasticsearch\index\engine\EngineConfig.java#L62-L62) 与 [mergeScheduler](file://D:\code\elasticsearch\server\src\main\java\org\elasticsearch\index\engine\InternalEngine.java#L143-L143)
    • 为什么删除文档不会立即释放磁盘空间?
  2. 近实时搜索(NRT)
    • [refresh](file://D:\code\elasticsearch\server\src\main\java\org\elasticsearch\index\engine\InternalEngine.java#L2020-L2023) 操作与 [translog](file://D:\code\elasticsearch\server\src\main\java\org\elasticsearch\index\engine\InternalEngine.java#L142-L142) 的协作机制
    • 写入流程:Memory Buffer → [Translog](file://D:\code\elasticsearch\server\src\main\java\org\elasticsearch\index\translog\Translog.java#L87-L1971) → SegmentCommit Point

四、查询执行流程

  1. 分布式查询阶段
    • Query Phase:协调节点分发查询到各分片
    • Fetch Phase:通过 doc_values_source 获取完整数据
  2. 相关性算分
    • TF-IDF 与 BM25 算法对比(ES 5.x 后默认 BM25)
    • 自定义 [similarity](file://D:\code\elasticsearch\server\src\main\java\org\elasticsearch\index\engine\EngineConfig.java#L64-L64) 模块实现业务相关性

五、数据一致性模型

  1. 写入一致性
    • wait_for_active_shards 参数控制写入副本数
    • 乐观锁机制:_seq_no_primary_term 的 CAS 实现
  2. 读取可见性
    • refresh_interval 对近实时性的影响
    • 通过 preference=_primary 强制读主分片

六、内存与磁盘管理

  1. JVM 堆内存
    • FielddataDoc Values 的内存/磁盘权衡
    • 熔断器(Circuit Breaker)机制防 OOM
  2. 文件系统缓存
    • 如何利用 [mmap](file://D:\code\elasticsearch\x-pack\plugin\blob-cache\src\main\java\org\elasticsearch\blobcache\shared\SharedBytes.java#L71-L71) 加速 Lucene 文件访问
    • index.store.preload 预热热点数据

七、性能调优底层原理

  1. 写入吞吐优化
    • 批量写入时 _bulk 的自动分段策略
    • Translog 的 [durability](file://D:\code\elasticsearch\server\src\main\java\org\elasticsearch\index\IndexSettings.java#L856-L856) 参数(async vs [request](file://D:\code\elasticsearch\test\framework\src\main\java\org\elasticsearch\test\TestSearchContext.java#L81-L81))
  2. 查询加速技巧
    • Filter 上下文利用 BitSet 缓存机制
    • 通过 constant_keyword 减少倒排链扫描

附:原理级调试工具

// 查看分片分配细节(源码级调试)
GET _cluster/allocation/explain
{"index": "my_index","shard": 0,"primary": true
}// 分析查询执行计划(需开启profile)
GET /my_index/_search
{"profile": true,"query": {...}
}

建议通过 Elasticsearch 官方源码 结合关键类如 [TransportSearchAction](file://D:\code\elasticsearch\server\src\main\java\org\elasticsearch\action\search\TransportSearchAction.java#L122-L1995)(搜索入口)、[InternalEngine](file://D:\code\elasticsearch\server\src\main\java\org\elasticsearch\index\engine\InternalEngine.java#L135-L3476)(写入引擎)进行断点级分析,这是真正吃透原理的最佳路径。

相关文章:

【吃透 Elasticsearch 的核心原理】学习步骤

要真正,需深入以下关键机制(结合最新技术演进): 一、倒排索引机制 核心三要素 Term Index:FST 结构加速前缀匹配(如 ap* 查询)Term Dictionary:存储所有 token 及统计信息&#xff…...

springboot使用mybatisPlus进行数据库增删改查

springboot使用mybatisPlus进行数据库增删改查 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是springboot的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个…...

移动端前端开发中常用的css

在开发移动端项目的时候,很多样式都是相同的,比如说图标大小,头像大小,页面底部保存(添加按钮),项目主体颜色等等,对于这些在项目中常用到的,通常都会写在公共样式中(pub…...

C/C++内存分布

内存分布示意图: 内存分布各区域详解: 内核空间: 放置操作系统相关的代码和数据。(用户不能直接进行操作 ------ 可以通过调用系统提供的 api 函数) 栈区: 又叫堆栈,非静态局部变量/函数参数/…...

Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

版本: 原因 在 Dart Sass 3.0.0 中, @import 规则将被弃用,推荐使用 @use 和 @forward 规则来替代。 1.@use替代@import @use 规则允许你引入其他 Sass 文件中的变量、混合器和函数,并且可以避免命名冲突。 示例: style.scss @use variables;body {color: variables.$pr…...

【计算机网络】用户从输入网址到网页显示,期间发生了什么?

1.URL解析 浏览器分解URL:https://www.example.com/page 协议:https域名:www.example.com路径:/page 2.DNS查询: 浏览器向DNS服务器发送查询请求,将域名解析为对应的IP地址。 3.CDN检查(如果有)&#…...

使用adb设置wifi相关

其他的可以参考以下指令 Android 使用adb操作WiFi连接扫描等相关指令_adb wifi-CSDN博客 但是如果你的wifi账号出现中文的时候: 例如:ssid "wolf的网络" 这种类型的时候,直接使用adb指令是有问题的,基本都会出现乱码…...

MySQL数据库创建、删除、修改

一:建库建表 我们以学校体系进行建表。将数据库命名为school。 以下代码中的大写均可小写不影响。如CREATE DATABASE与create database相同 四个关键的实体分别是学院、老师、学生和课程,其中,学生跟学院是从属关系,这个关系从…...

【Android】动画原理解析

一,基础动画 基础动画,有四种,分别是平移(Translate)、缩放(Scale)、Rorate(旋转)、Alpha(透明度),对应Android中以下四种。 1,Animation基类 1,基本概念 1,插值器 插值器的作用,是控制动画过程的参数,可以理解为 时间(t)与动画进程(d)的函数,动画仅…...

C++从入门到实战(十四)初识STL与STL简介

C从入门到实战(十四)初识STL与STL简介 前言一、什么是 STL?二、STL 的版本三、STL六大组件(目前了解即可,后面会逐步讲解)1. 容器(Containers)—— 装数据的“盒子”2. 算法&#xf…...

力扣-142.环形链表II

题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 不允许修改 链表。 class Solution { public:ListNode *detectCycle(ListNode *head) {ListNode *fast head;ListNode *slow head;while (fast) {…...

ERC-20与ERC-721:区块链代币标准的双星解析

一、代币标准的诞生背景 在以太坊生态中,代币标准是构建去中心化应用(DApps)的基石。ERC-20与ERC-721分别代表同质化与非同质化代币的两大核心标准,前者支撑着90%以上的加密资产流通,后者则开启了数字资产唯一性的新时…...

图像管理与人脸识别工具深度解析

这篇Python应用程序代码实现了一个功能丰富的图像管理和人脸识别工具,它集成了多种实用功能,包括人脸检测与裁剪、屏幕截图以及生成PDF等核心功能。我将深入分析这个应用程序的架构、功能和实现方式,帮助读者理解其设计思路和关键技术点。 C…...

【图片合并PDF】一次性将多个文件夹里的图片批量按文件夹为单位合并PDF,多个文件夹图片合并PDF,基于WPF的实现方案

​​设计行业​​:设计师需要将项目设计稿按文件夹整理并合并为PDF交付客户 摄影行业​​:摄影师按主题分类的照片需要合并为PDF存档或分享 ​​企业文档管理​​:市场调研部门需要将分散在不同文件夹的调研图片合并为PDF报告 教育领域​​:教师需要将学生的作业图片按班…...

Matlab 数控车床进给系统的建模与仿真

1、内容简介 Matlab217-数控车床进给系统的建模与仿真 可以交流、咨询、答疑 2、内容说明 略 摘 要:为提高数控车床的加工精度,对数控 车床进给系统中影响加工精度的主要因素进行了仿真分析研 动系统的数学模型,利用MATLAB软件中的动态仿真工具 究:依据机械动力学原理建立了…...

HOW - 在 Mac 上的 Chrome 浏览器中调试 Windows 场景下的前端页面

文章目录 为什么需要模拟 Windows 环境?一、修改 User-Agent 模拟 Windows 浏览器方法 1:通过 Chrome 开发者工具修改 UA方法 2:使用浏览器插件 二、模拟 Windows 的字体和滚动条样式1. 模拟 Windows 字体2. 强制显示滚动条(模拟 …...

微信小程序执行C语言库的详细方案

以下是微信小程序中执行C语言库的详细技术方案,分为环境准备、开发流程、优化技巧三个部分: 一、环境准备阶段 1. 工具链安装 # 安装Emscripten核心工具链 git clone https://github.com/emscripten-core/emsdk.git cd emsdk ./emsdk install latest .…...

如何用分布式防御抵扣大规模DDoS攻击?

DDoS攻击是当前最严峻的网络安全威胁之一,其通过海量请求耗尽目标资源,导致服务瘫痪。面对攻击规模的指数级增长,传统的单点防御已难以应对。本文将结合最新技术趋势,探讨分布式防御体系在抵御大规模DDoS攻击中的核心策略与实践。…...

【MySQL】存储引擎 - MyISAM详解

📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...

如何在Jmeter中调用C程序?

在JMeter中调用C语言程序可以通过以下几种方式实现: 方法一:使用OS Process Sampler JMeter的“OS Process Sampler”可以用来调用外部程序,包括C语言编写的可执行文件。 步骤: 准备C语言程序: 编写C语言代码并编译…...

PyTorch 版本、torchvision 版本和 Python 版本的对应关系

PyTorch 版本、torchvision 版本和 Python 版本的对应关系 在深度学习领域,PyTorch 及其配套库 torchvision 的使用极为广泛。但不同版本的 PyTorch、torchvision 与 Python 之间存在严格的对应关系,若版本搭配不当,会导致代码运行出错…...

构建高可维护、易测试的异步任务系统:基于 Celery + Redis + Eventlet 的模块化架构实践

引言:为什么我们需要一个结构清晰的异步任务系统? 在现代软件开发中,异步任务已经成为提升响应性能、解耦业务逻辑、支持高并发的重要手段。尤其对于测试工程师而言,异步任务往往意味着: 任务执行不可控状态追踪困难…...

《智能网联汽车 自动驾驶功能场地试验方法及要求》 GB/T 41798-2022——解读

目录 1. 适用范围与核心目标 2. 试验核心要求 2.1 试验场地与环境 2.2 试验设备与数据采集 2.3 试验车辆要求 3. 试验过程与通过条件 4. 关键试验场景与方法 4.1 交通信号识别及响应 4.2 基础设施与障碍物识别 4.3 行人及非机动车场景 4.4 紧急避险与风险策略 5. 特…...

删除链表倒数第N个节点

Leetcode(19): 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 分析: 首要目标就是找到第N个节点的前一个节点,因为只有通过这个节点(cur)才可进行对…...

创建型模式:抽象工厂(Abstract Factory)模式

一、概念与核心思想​ 抽象工厂(Abstract Factory)模式是创建型设计模式的重要成员,它提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。该模式将对象的创建逻辑封装在抽象工厂及其具体实现类中,客户端通过抽象工厂接口获取所需的对象族,实现对象创…...

预训练模型实战手册:用BERT/GPT-2微调实现10倍效率提升,Hugging Face生态下的迁移学习全链路实践

更多AI大模型应用开发学习内容,尽在聚客AI学院。 一. 预训练模型(PTM)核心概念 1.1 什么是预训练模型? 预训练模型(Pre-trained Model, PTM)是在大规模通用数据上预先训练的模型,通过自监督学…...

基于Flink的用户画像 OLAP 实时数仓统计分析

1.基于Flink的用户画像 OLAP 实时数仓统计分析 数据源是来自业务系统的T日数据,利用kakfa进行同步 拼接多个事实表形成大宽表,优化多流Join方式,抽取主键和外键形成主外键前置层,抽取外键和其余内容形成融合层,将4次事…...

php java go python面向对象的设计原则和常用设计模式

一、面向对象设计原则(OOP Design Principles) 是写出高内聚、低耦合、可维护系统的基础,重点是 SOLID 五大原则 其他补充原则。 📌 SOLID 五大设计原则: 原则名称全称核心思想示例关键词S 单一职责原则Single Respo…...

第十三节:图像形态学操作-腐蚀与膨胀

引言 图像形态学是数字图像处理领域中的一个重要分支,它主要研究图像中物体的形状和结构。作为形态学操作的基础,腐蚀(Erosion)和膨胀(Dilation)是两种最核心的操作,广泛应用于图像预处理、特征提取、目标检测等多个领域。OpenCV作为最流行的…...

数据结构 - 9( 位图 布隆过滤器 并查集 LRUCache 6000 字详解 )

一:位图 位图是一种高效的数据结构,它通过比特来表示某个值的存在与否,通常以连续的二进制位数组存储。每个比特位对应一个特定的状态,这种表示方式在内存效率和操作速度上具有显著优势,尤其适用于海量数据、整数以及…...

在Hugging Face网站像Github一样克隆repository到本地的具体步骤

首先我们找到自己想要的仓库,在搜索栏进行搜索 之后我们可以看到这里有三个点,鼠标点击,选择Clone repository 最后按照上面的步骤进行复制粘贴到电脑上执行就行,我们可以看到有两种选择HTTPS和SSH,如果HTTPS不行就选择…...

如何使用Java从PDF文件中提取图像(教程)

Java本身不直接支持PDF文件操作,因此需要使用外部Java PDF库。本教程将向您展示如何通过5个简单步骤,使用JPedal Java PDF库从PDF文件中提取图像。 使用Java从PDF中提取图像 • 将JPedal库添加到您的类路径或模块路径(下载试用版jar文件&…...

通过混合机器学习和 TOPSIS 实现智能手机身份验证的稳健行为生物识别框架

1. 简介 随着日常工作、个人生活和金融操作对智能手机的依赖性不断增强,对弹性安全身份验证系统的需求也日益增长。尽管 PIN 码、密码和静态生物识别等传统身份验证方法仍可为系统提供一定的安全级别,但事实证明,它们容易受到多种威胁,包括敏感数据泄露、网络钓鱼、盗窃和…...

day010

文章目录 1. 在Ubuntu中使用visudo2. 别名 alias2.1 查看已配置的别名2.2 配置grep别名2.3 配置rm别名2.4 临时使用配置别名的命令 3. 系统校验检查3.1 md5校验3.2 aide 高级入侵检测环境3.2.1 安装aide3.2.2 修改aide配置文件3.2.3 根据配置文件生成初始的指纹信息库3.2.4 使用…...

Coco AI 开源应用程序 - 搜索、连接、协作、您的个人 AI 搜索和助手,都在一个空间中。

一、软件介绍 文末提供程序和源码下载 Coco AI 是一个统一的搜索平台,可将您的所有企业应用程序和数据(Google Workspace、Dropbox、Confluent Wiki、GitHub 等)连接到一个功能强大的搜索界面中。此存储库包含为桌面和移动设备构建的 Coco 应…...

MySQL 8.0 OCP(1Z0-908)英文题库(11-20)

目录 第11题题目分析正确答案 第12题题目分析正确答案 第13题题目分析正确答案 第14题题目分析正确答案 第15题题目分析正确答案 第16题题目分析正确答案 第17题题目分析正确答案: 第18题题目分析正确答案 第19题题目分析正确答案 第20题题目分析正确答案 第11题 W…...

国标GB28181软件EasyGBS雪亮工程打造智能高效的视频监控新体系

一、背景 雪亮工程是构建公共安全视频监控联网应用的系统工程,旨在通过整合各类视频监控资源,实现城乡视频监控一体化,提升社会治安防控能力。随着城市化进程的加快和社会治理需求的不断提高,雪亮工程的建设规模不断扩大&#xf…...

视频添加字幕脚本分享

脚本简介 这是一个给视频添加字幕的脚本,可以方便的在指定的位置给视频添加不同大小、字体、颜色的文本字幕,添加方式可以直接修改脚本中的文本信息,或者可以提前编辑好.srt字幕文件。脚本执行环境:windowsmingwffmpeg。本方法仅…...

springCloud/Alibaba常用中间件之GateWay网关

文章目录 SpringCloud:依赖版本补充GateWay:网关三大核心之Router:路由1、导入基础依赖2、进行服务注册3、路由映射4、测试访问GateWay的端口是否可以访问 三大核心之Predicate:断言配置文件自定义Predicate(断言) 三大核心之Filter:过滤配置文件自定义全…...

ABP vNext + Dapr 实现云原生微服务治理

ABP vNext Dapr 实现云原生微服务治理 🚀 前言 📝 随着云原生与微服务架构的快速发展,相关工具和框架也在不断演进。ABP vNext 是一套成熟而现代的 .NET 应用开发框架,在模块化、领域驱动设计等方面提供强大支持。而 Dapr 作为…...

【报错】view size is not compatible with input tensor‘s size and stride

完整报错 Traceback (most recent call last): File "D:\360MoveData\Users\HONOR\whu\TwoStageTraining.py", line 590, in <module> criterionseg_criterion, save_dir./models, writerwriter_first_stage) File "D:\360MoveData\Users\HONOR\whu\TwoS…...

maven如何搭建自己的私服(windows版)?

环境准备 安装 JDK &#xff1a;确保系统已安装 JDK 8 或更高版本。可以通过以下步骤安装 JDK&#xff1a; 下载 JDK 安装包&#xff0c;可以从Oracle 官方网站下载适用于 Windows 的 JDK 安装程序。 运行安装程序&#xff0c;按照提示完成安装。安装过程中可以指定安装路径&a…...

CDGP|数据全生命周期的“收数、治数、用数、保数”体系详解

在数据成为重要资产的今天&#xff0c;如何高效地管理和利用数据已成为企业和组织的核心竞争力之一。数据全生命周期管理涵盖了从数据收集、治理、应用到保护的各个环节&#xff0c;形成了一个闭环体系。本文将重点介绍数据全生命周期中的“收数、治数、用数、保数”四个关键环…...

在UI原型设计中,低、高保真原型图有什么区别?

在数字产品开发中&#xff0c;原型&#xff08;Prototype&#xff09; 是连接创意与落地的桥梁。它通过可视化的方式验证功能、交互与用户体验&#xff0c;避免开发资源浪费。而低保真&#xff08;Lo-Fi&#xff09;与高保真&#xff08;Hi-Fi&#xff09;原型&#xff0c;则是…...

万物互联时代:ONVIF协议如何重构安防监控系统架构

前言 一、ONVIF协议是什么 ONVIF&#xff08;Open Network Video Interface Forum&#xff0c;开放式网络视频接口论坛&#xff09;是一种全球性的开放行业标准&#xff0c;由安讯士&#xff08;AXIS&#xff09;、博世&#xff08;BOSCH&#xff09;和索尼&#xff08;SONY&…...

初识Linux · 传输层协议TCP · 上

目录 前言&#xff1a; TCP结构体 首部长度 确认应答机制 捎带应答机制 超时重传机制 连接管理机制 三次握手 SYN_SENT SYN_RCVD ESTABLISHED TCP为什么是三次握手 四次挥手 什么是四次挥手 状态理解 CLOSE_WAIT LAST_ACK TIME_WAIT 前言&#xff1a; 前文有…...

基于SpringBoot的校园周边美食探索及分享平台的设计与实现

资源详情&#xff1a; 私信我或点击链接获取&#xff1a; 基于SpringBoot的校园周边美食探索及分享平台的设计与实现资源-CSDN文库 摘要 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起&#xff0c;互联…...

系统架构设计-真题2024下半年总结

系统架构设计-真题2024下半年总结 综合知识&#xff08;选择题&#xff09;考点分布选择题详细解释ABSD方法简介 选项分析生活化例子概念讲解系统的质量目标系统的商业目标系统开发人员的商业目标 简单记法总结基于内容推荐的优点选项分析正确答案总结 综合知识&#xff08;选择…...

《React Native性能优化:从卡顿到丝滑的蜕变之旅》

《React Native性能优化:从卡顿到丝滑的蜕变之旅》 前言:当你的React Native应用开始"便秘"… “这破应用怎么又卡了?!”——如果你也曾在测试自己的React Native应用时发出这样的呐喊,那么你不是一个人在怒吼。想象一下这样的场景:你精心打造的APP在低端安卓…...

flutter build apk出现的一些奇怪的编译错误

我换了新电脑后重新编译基于livekit 的 flutter livekit工程&#xff0c;然后编译的时候一直报flutter_webrtc的 0.11.7 版本的dart代码有一个接口未实现&#xff0c;我比较了所以环境和版本实现找不到问题&#xff0c;根本不正常哪里导致的问题 &#xff0c;以前的电脑的环境一…...