ES索引原理

ES在检索时底层使用的就是倒排索引,正向索引是通过key找value,反向索引则是通过value找key。

索引会分为两个区域:索引区和元数据区。数据是这样存储在里面的:

 

简单理解就是:当要录入一条数据时,首先会将完整的数据插入到元数据区中,就算没有指定id,底层也会自动生成uuid。然后将一个个的字段根据其类型放到索引区存储,如果是非text类型的,需要记录其值和对应这一条数据的id,如果为text类型的,则需要先进行分词,然后将每个词进行一个个存储,顺便记录词出现次数和数据的id,如果这个词已经在索引区存在了,直接将id加入到对应数据id的列表即可

查找的过程:根据字段的值先去索引区中根据值去找到对应的key(数据id),也就是倒排索引,拿到对应的数据id后,再去元数据区直接取整条数据记录,所以效率也就很高。

如下是更细节的存储:

 

注意:ES分别为每个字段都建立了一个倒排索引。因此查询时查询字段的term,就能知道文档ID,就能快速找到文档。  

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

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

相关文章

【国产之光】开年尝鲜——优秀的AI编码助手 Fitten Code

文章目录 前言1. 工具准备1.0 事先说明1.1 VSCode1.2 Fitten Code1.3 GitHub Copilot 2. 使用测评2.1 需求理解2.2 上下文理解 3. 总结推荐链接 开年尝鲜高质量国产AI编码助手——FittenCode 前言 2024年刚刚开局,清华大学 与 非十科技 就发布了全新的 VSCode AI…

2024软件测试该如何发展?测试员怎样在内卷中走出来?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、行业现状 目前…

前端规范扩展

前端编程规范是基于原有vue2基础上那套《编码风格及标准》上,应用于vue3、typescript、vite2基础上延伸出来的扩展补充,持续完善 一、编码规范 ESLint 代码检测工具 Pretter 代码格式化工具配合双校验代码 Git 规范 - 编码工具 vscode 同步参考文档中…

kylin集群使用nginx反向代理

前文已经提到,我安装了kylin集群。 kylin3集群问题和思考(单机转集群)-CSDN博客文章浏览阅读151次,点赞3次,收藏6次。由于是同一个集群的,元数据没有变化,所以,直接将原本的kylin使用…

基础篇_开发命令行程序(输入输出,类型、变量、运算符,条件语句,循环语句,方法,package与jar)

文章目录 一. 输入输出1. System.out2. System.in3. Scanner4. 变量名5. 关键字 二. 类型、变量、运算符1. 字符与字符串字符值与字符串值转义字符文本块 2. 类型何为类型数字类型字符类型 3. 变量与运算符变量运算符 4. 练习 - 房贷计算器Math.pow()数字格式化查阅 Javadoc 三…

什么是云服务器CVM?

腾讯云服务器CVM提供安全可靠的弹性计算服务,腾讯云明星级云服务器,弹性计算实时扩展或缩减计算资源,支持包年包月、按量计费和竞价实例计费模式,CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格,提供9个9的数…

MySQL 图书管理系统

1.需求分析 1.1项目需求分析简介 1.1.1信息需求分析 (1) 图书信息:包括书籍编号,书籍名称,出版社,作者,库存量,出版日期,价格,库存,剩余量,类别等&#xf…

Android Retrofit使用详情

一、 Retrofit是什么 Retrofit是Android用来接口请求的网络框架,内部是基于OkHttp实现的,retrofit负责接口请求的封装,retrofit可以直接将接口数据解析为Bean类、List集合等,直接简化了中间繁琐的数据解析过程 二、 Retrofit的简单…

必须掌握的100+个Linux命令大全【持续更新中】

别有一番风趣的alias … note:: 寒蝉凄切,对长亭晚,骤雨初歇。 柳永《雨霖铃》 Linux alias命令用于设置指令的别名,可以将比较长的命令进行简化。 默认情况下会输出当前的设置: $ alias lls -lah lals -lAh llls -lh lsls --…

C++学习笔记——多态与静态联编和动态联编

目录 一、多态 二、静态联编(Static Binding)和动态联编(Dynamic Binding) 2.1静态联编 2.2动态联编 一、多态 是C中面向对象编程的一个核心概念,它允许派生类对象替代其基类对象,从而实现代码重用和扩…

代码随想录算法训练营第17天 | 110.平衡二叉树 + 257. 二叉树的所有路径 + 404.左叶子之和

今日内容 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 110.平衡二叉树 - Easy 题目链接:. - 力扣(LeetCode) 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为&#xff1…

springboot注解@PropertySource作用

简介 PropertySource 是 Spring 框架中的一个注解,用于指定一个或多个属性文件(通常是.properties文件)这些文件包含了应用程序需要的配置信息。当你在 Spring 的配置类中使用此注解时,Spring 容器会加载这些属性文件&#xff0c…

01.坦克大战项目-Java绘图坐标体系

01.坦克大战项目- Java绘图 01. Java绘图坐标体系 1. 坐标体系介绍 ​ 下图说明了java坐标系。坐标原点位于左上角,以像素为单位。在Java坐标系中,第一个是x坐标系,表示当前位置为水平方向,距离坐标原点x个像素;第二…

揭露欧拉骗局4.“Σ1/n²=π²/6”里的猫腻

自然数平方倒数求和Σ1/n是一个并不复杂的问题,但它困扰了欧洲大陆整整90年,在欧系数学里它被称为“巴塞尔级数”。 解决巴塞尔级数让欧拉一战成名,然而欧拉采用的方法对数学这门学问是严重的侮辱。数学是工具学科,数学的宗旨是化…

Asp .Net Core 系列: 集成 Consul 实现 服务注册与健康检查

文章目录 什么是 Consul?安装和运行 ConsulAsp .Net Core 如何集成 Consul 实现服务注册和健康检查Consul.AspNetCore 中的 AddConsul 和 AddConsulServiceRegistration 方法 究竟做了什么?AddConsul 方法AddConsulServiceRegistration 方法 配置 Consul 检查服务封…

【椒盐玉兔】GPTs Store 商店的TOP100 自定义GPT使用报告

详细的图文报告有100张图,因为太长就放网盘链接 链接:百度网盘 请输入提取码 提取码:ub2n 解压密码:heehel 更多作品:长期更新国内外,中英文AI人工智能作品 整理获取 通过算法,筛选出了目前访…

每天刷两道题——第十四天

1.1矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用原地算法。 输入:matrix [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]] 原地算法(…

Java面试题(java高级面试题)

线程池的核心线程数设置为多大比较合理? Worker线程在执行的过程中,有一部计算时间需要占用CPU,另一部分等待时间不需要占用CPU,通过量化分析,例如打日志进行统计,可以统计出整个Worker线程执行过程中这两…

书生·浦语大模型--第二节课笔记

书生浦语大模型--第二节课 大模型及InternLM基本介绍实战部分demo部署准备工作模型下载代码准备终端运行web demo 运行 Lagent 智能体工具调用 Demo准备工作Demo 运行 浦语灵笔图文理解创作 Demo环境准备下载模型下载代码运行 大模型及InternLM基本介绍 大模型 定义&#xff…

一阶低通滤波器

一阶低通滤波器 X为输入,Y为滤波后得到的输出值;本次的输出结果主要取决于上次的滤波输出值,其中a是和滤波效果有关的一个参数,称为滤波系数;它决定新采样值在本次滤波结果中所占的权重; 滤波系数a越小&a…