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

分布式全文检索引擎ElasticSearch-基本概念介绍

一、索引类型

索引,可以理解是我们的目录,看一本书的时候,可以根据目录准确快速定位到某一页,那么索引就可以帮我们快速定位到某条数据在庞大的数据表的哪一个位置。

我们常见的索引包括正排索引和倒排索引

1、正排索引

正排索引是以文档的ID为关键字,表中记录文档中每个字段的位置信息,查找时扫描表中每个文档中字段的信息直到找出所有包含查询关键字的文档

比如MySQL的B+树索引

只有叶子节点存放完整的数据,有时叶子结点也不存放,即每个节点只存放索引的字段(上图为主键id),得到了id,再根据id回表查询完整的数据,这就是正排索引的完整流程

2、倒排索引

倒排索引,是根据索引的字段内容进行统一,每个分词记录好哪些数据的索引字段有这个分词,以及这个词语出现在那段索引内容的第几个位置,获取到数据的id,根据id再拿完整数据

关于倒排索引更详细的请参考这篇文章

ElasticSearch倒排索引机制_elasticsearch采用 倒排的检索机制-CSDN博客

两种索引查找顺序

二、逻辑上的基本概念

我们类比MySQL中的概念来理解ES当中的这些专业概念

ES中的概念关系型数据库说明
索引库(indices)Databases 数据库indices是index的复数,代表许多的索引
类型(type)Table 数据表类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同,不过这会导致索引库混乱,因此未来版本中会移除这个概念
文档(document)Row 行存入索引库原始的数据,比如每一条商品信息,就是一个文档
字段(field)Columns 列文档中的属性
映射配置(mappings)表结构字段的数据类型、属性、是否索引、是否存储等特性

1、索引

一个索引相当于数据库,是多个相似文档的集合,必须要指定索引名(相当于指定要查询的数据库),才能进行搜索

一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字

它除了保存许多文档之外,还会保存倒排索引库,其中记录了每一个词项出现过的文档总数,在对应的文档中一个具体词项出现的总次数,词项在文档中的顺序,每个文档的长度,所有文档的平均长度等等相关信息。

2、类型

这个概念在较新的版本中已经摒弃,不过多介绍

3、文档

一个文档是可以被索引的一个基本单元,相当于数据库中的一条数据,索引和搜索数据的最小单位是文档

结合上面的倒排索引可以知道,倒排索引存储包含了索引文件以及数据文件

在我们查询的时候,一般使用term词项先去倒排索引库中查询到文档_id,然后根据_id去文档库中找到最初上传上去的所有文档原始内容_source,当然,前提是上传的时候有保存原始数据

倒排索引库

term词项  _id  词频、位置
term词项  _id  词频、位置
term词项  _id  词频、位置
...

文档库

_index_type_id  _version  _source_id  _version  _source_id  _version  _source...

4、字段

相当于数据库表的字段,每个字段有不同的类型

5、映射

Mapping是对处理数据时的方式和规则作出一定的限制,如字段的类型、默认值、分析器、是否被索引等,映射定义了每个字段的类型、字段所使用的分词器等。 

三、物理上的基本概念

集群

一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能

集群有哪些角色

Master节点

Master角色的主要职责是负责集群层面的相关操作,管理集群变更,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点。

仅投票节点

仅投票节点用来凑数的,如果只部署了两个候选主节点,当一个节点挂掉后集群将会不可用,加入了仅投票节点则不一样,有了仅投票节点可以帮助快速选择一个主节点出来,并且仅投票节点不会选为主节点,不存储数据,所以消耗的资源也很小。

数据节点

数据节点主要是存储索引数据的节点,执行数据相关操作:CRUD、搜索,聚合操作等。

预处理节点

预处理操作运行在索引文档之前,即写入数据之前,通过事先定义好的一系列processors(处理器)和pipeline(管道),对数据进行某种转换、富化,预处理完之后,再进行索引数据落盘

仅协调节点

协调节点将请求转发给保存数据的数据节点,每个数据节点在本地执行请求,并将结果返回给协调节点。

协调节点收集完数据合,将每个数据节点的结果合并为单个全局结果,对结果收集和排序的过程可能需要很多CPU和内存资源。

所以就是分发 -> 汇总的作用

节点

一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索引和搜索功能

和集群类似,一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随机的漫威漫画角色的名字,这个名字会在启动的时候赋予节点

分片

分片的存在是为了解决单个索引大量文档的存储问题、以及搜索是响应慢等问题。

比如,一个具有10亿文档的索引占据1TB的磁盘空间,而任一节点都没有这样大的磁盘空间,或者单个节点处理搜索请求,响应太慢,为了解决这个问题,Elasticsearch提供了将索引划分成多份的能力,这些份就叫做分片。

        将一个索引划分成了多份,每一份就称之为分片,每个分片也是一个功能完善的“索引”,这个“索引”可以被放置到集群的任意节点上,通过"分"的思想,可以突破单机在存储空间和处理性能上的限制,这是分布式系统的核心目的

至于一个分片怎样分布,它的文档怎样聚合回搜索请求,是完全由Elasticsearch管理的,对于作为用户的你来说,这些都是透明的。

副本

而对于分布式存储而言,还有一个重要特性是"冗余",因为分布式的前提是:接受系统中某个节点因为某些故障退出,为了保证在故障节点退出后数据不丢失,同一份数据需要拷贝多份存在不同节点上

副本的作用:

  • 在分片/节点故障的情况下,提供了高可用性:
            因为这个原因,注意副本分片从不与主分片置于同一节点上这一点非常重要的
  • 扩展你的搜索量/吞吐量:
            因为搜索可以在所有的副本上并行运行,总之每个索引可以被分成多个分片

segment来自于lucene,因为ES底层就是使用的lucene,一个分片包含一组segment,segment是最小的数据单元

Elasticsearch每隔一段时间产生一个新的segment,里面包含了新写入的数据,lucene的数据写入会先写如到缓存(buffer)中,当达到一定数量以后,会flush成文一个segment,写入到磁盘当中,每个segement有自己独立的索引,可以单独查询。

相关文章:

分布式全文检索引擎ElasticSearch-基本概念介绍

一、索引类型 索引,可以理解是我们的目录,看一本书的时候,可以根据目录准确快速定位到某一页,那么索引就可以帮我们快速定位到某条数据在庞大的数据表的哪一个位置。 我们常见的索引包括正排索引和倒排索引 1、正排索引 正排索…...

电子应用设计方案-49:智能拖把系统方案设计

智能拖把系统方案设计 一、引言 随着人们生活水平的提高和对清洁效率的追求,智能拖把作为一种创新的清洁工具应运而生。本方案旨在设计一款功能强大、操作便捷、清洁效果出色的智能拖把系统。 二、系统概述 1. 系统目标 - 实现自动清洁地面,减轻用户劳…...

汽车免拆诊断案例 | 2014款保时捷卡宴车发动机偶尔无法起动

故障现象 一辆2014款保时捷卡宴车,搭载3.0T 发动机,累计行驶里程约为18万km。车主反映,发动机偶尔无法起动。 故障诊断 接车后试车,发动机起动及运转均正常。用故障检测仪检测,发动机控制单元(DME&#x…...

电脑怎么设置通电自动开机(工控机)

操作系统:win10 第一步,电脑开机时按del键进入bios页面。 第二步,选择advanced下的IT8712 Super IO Configuration 第三步,找到Auto Power On,将其从Power off设置为Power On 第四步,F10保存,大…...

MaxKB进阶:豆包大模型驱动的智能日报小助手

MaxKB进阶:豆包大模型驱动的智能日报小助手 说明: 在本教程中,我们通过“智能日报小助手”的应用场景,全面解析MaxKB的进阶功能:从如何接入公共大模型(以豆包为例),到函数功能的灵活…...

Python爬虫之使用xpath进行HTML Document文档的解析

响应有两种:JSON数据和HTML页面,对于后者就需要进行解析HTML Documen得到我们需要的信息。 ① xpath使用 可以提前安装xpath插件,也可以自己从HTML源码解析。 (1)打开chrome浏览器 (2)点击右…...

调度系统:使用 Airflow 对 Couchbase 执行 SQL 调度时的潜在问题

使用 Airflow 对 Couchbase 执行 SQL 调度时,通常情况下不会直接遇到与 Couchbase 分布式特性相关的异常,但在某些特定情境下,可能会出现一些与分布式环境、调度和数据一致性相关的潜在问题。以下是一些可能会遇到的问题和建议的解决方案&…...

【数据结构——查找】二分查找(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现二分查找的算法。 相关知识 为了完成本关任务,你需要掌握:1.根据键盘输入的一组有序数据建立顺序表,2.顺序表的输…...

简单网页制作提升用户体验和客户转化

在当今竞争激烈的市场中,用户体验和客户转化率往往是决定企业成败的关键。简单而高效的网页制作,正是提升用户体验和客户转化的重要手段之一。 首先,简洁的网页设计能够有效减轻用户的认知负担。当用户打开一个层次分明、界面整洁的网站时&am…...

数据类型(使用与定义)

基本数据类型是CPU可以直接进行运算的类型,在算法直接被使用,主要包括: 整数类型:byte、short、int、long。 浮点数类型:float、double,用于表示小数。 字符类型:char,用于表示各种语言的字母…...

VMware:CentOS 7.* 连不上网络

1、修改网络适配 2、修改网卡配置参数 cd /etc/sysconfig/network-scripts/ vi ifcfg-e33# 修改 ONBOOTyes 3、重启网卡 service network restart 直接虚拟机中【ping 宿主机】,能PING通说明centOS和宿主机网络通了,只要宿主机有网,则 Ce…...

日志分析详解

文章目录 日志分析的概述日志分析的作用主要收集工具集中式日志系统主要特点采集日志分类ELK概述ELK收集日志的两种形式 搭建ELK平台安装部署docker添加镜像加速器安装部署Elasticsearch安装ElasticSearch-head(可选)运行容器页面无数据问题测试 安装Kib…...

【JavaWeb后端学习笔记】Maven项目管理

Maven 1、分模块设计2、Maven继承2.1 继承关系2.2 版本锁定 3、Maven聚合4、聚合与继承的关系 1、分模块设计 如果一个项目中含有大量的功能模块。可以考虑将这些功能分模块设计,逐一进行开发。例如将公共类可以定义在一个项目中,将通用工具类也放在一个…...

Docker--Docker Container(容器) 之 操作实例

容器的基本操作 容器的操作步骤其实很简单,根据拉取的镜像,进行启动,后可以查看容器,不用时停止容器,删除容器。 下面简单演示操作步骤 1.创建并运行容器 例如,创建一个名为"my-nginx"的交互…...

Android前端签到web迁移到rust的axum的过程-签到的重构

本次变更了以下内容: 为了使用之前ip2sta的ip到端点名的python,dic变量,将其存入redis hashset.使用地址/api/ip2dic 手动执行之.并且定义在/station/init,这个每天初始化redis的路径下.在rust axum的route中定义/sta/ip2dic,用来得到redis字典的内容,包含值和键.在前端的人名…...

用户认证系统登录界面

下面是使用HTML和JavaScript实现的一个中文版登录界面&#xff0c;包含登录、注册和修改密码功能。注册成功后会显示提示信息&#xff0c;在登录成功后进入一个大大的欢迎页面。 1.代码展示 <!DOCTYPE html> <html lang"zh-CN"> <head><meta …...

Redis从入门到进阶(总结)

以下内容均以CentOS7为背景。 一、Redis安装及启动 mysql&#xff08;读&#xff1a;2000/s&#xff1b;写&#xff1a;600/s&#xff09; redis&#xff08;读&#xff1a;10w/s&#xff1b;写&#xff1a;8w/s&#xff09;通过官方给出的数据单机并发可以达到10w/s&#xf…...

【D3.js in Action 3 精译_044】5.1 饼图和环形图的创建(四):数据标签的添加

当前内容所在位置&#xff1a; 第五章 饼图布局与堆叠布局 ✔️ 5.1 饼图和环形图的创建 ✔️ 5.1.1 准备阶段&#xff08;一&#xff09;5.1.2 饼图布局生成器&#xff08;二&#xff09;5.1.3 圆弧的绘制&#xff08;三&#xff09; ✔️5.1.4 数据标签的添加&#xff08;四&…...

Linux的基本功能和命令

Linux的基本功能和命令 切换目录 pwd 查询当前目录地址 cd /xxx/xxx 转到目录 cd …/ 回到上一级目录 cd ./ 当前目录 创建、删除文件/文件夹 创建文件\文件夹 touch filename 创建空文件mkdir 创建目录 mkdir -p 目标目录存在也不报错mkdir -p xxx/xxx 递归创建目录…...

【Spark】Spark的两种核心Shuffle工作原理详解

Spark 的shuffle机制 一、Spark ShuffleManager 发展历程 Spark 1.1.0 之前 在 Spark 1.1.0 之前&#xff0c;Spark 使用 BlockStoreShuffleFetcher 来处理 Shuffle 操作。这个实现主要依赖于直接从 BlockManager 获取 Shuffle 数据&#xff0c;并通过网络进行交换。 Spark …...

TCP 的文化内涵

从历史和文化内涵的视角看 TCP 协议的优势和局限&#xff0c;这些都刻在基因里。节约和经济获得向下兼容&#xff0c;但这也意味着它没有浪费带宽的本意&#xff0c;任何相左的优化策略终将遇到无法解决的困难&#xff0c;大致就这样&#xff0c;这为设计新协议提了意见&#x…...

ASP.NET |日常开发中读写XML详解

ASP.NET &#xff5c;日常开发中读写XML详解 前言一、XML 概述1.1 定义和结构1.2 应用场景 二、读取 XML 文件2.1 使用XmlDocument类&#xff08;DOM 方式&#xff09;2.2 使用XmlReader类&#xff08;流方式&#xff09; 三、写入 XML 文件3.1 使用XmlDocument类3.2 使用XmlWr…...

Less和SCSS,哪个更好用?

前言 Less 和 SCSS 都是流行的 CSS 预处理器&#xff0c;它们的目的都是扩展 CSS 的功能&#xff0c;使样式表更具组织性、可维护性和可重用性。虽然它们有许多相似之处&#xff0c;但在语法、特性和工作方式上也存在一些差异。 Less Less 是一种动态样式表语言&#xff0c;…...

第一个C++程序--(蓝桥杯备考版)

第一个C程序 基础程序 #include <iostream>//头⽂件 using namespace std;//使⽤std的名字空间 int main()//main函数 {cout << "hello world!" << endl; //输出&#xff1a;在屏幕打印"hello world!" return 0;}main函数 main 函数是…...

NanoLog起步笔记-7-log解压过程初探

nonolog起步笔记-6-log解压过程初探 再看解压过程建立调试工程修改makefile添加新的launch项 注&#xff1a;重新学习nanolog的README.mdPost-Execution Log Decompressor 下面我们尝试了解&#xff0c;解压的过程&#xff0c;是如何得到文件头部的meta信息的。 再看解压过程 …...

【MySQL 进阶之路】基础语法及优化技巧

MySQL DML 基础语法及优化技巧 一、DML&#xff08;数据操作语言&#xff09;概述 DML 是数据库操作语言的子集&#xff0c;用于数据的增、删、改、查四个基本操作。MySQL 中的 DML 操作通常是指以下四种基本操作&#xff1a; INSERT&#xff1a;插入数据SELECT&#xff1a;…...

微信小程序做电子签名功能

文章目录 最近需求要做就记录一下。 人狠话不多&#xff0c;直接上功能&#xff1a; 直接搂代码吧,复制过去就可以用&#xff0c;有其他需求自己改吧改吧。 signature.wxml <!-- 电子签名页面 --> <custom-navbar title"电子签名"show-home"{{fals…...

PR的选择与移动

选择工具 可以选择序列上的剪辑&#xff0c;如果需要多选可以按住shift键选中多个剪辑 CtrlA&#xff1a;可以进行全选 编组 选中多个剪辑后“右键-编组“可以将所选的剪辑连接在一起。这时单击任意剪辑都可以选中全部 向前选择轨道工具与向后选择轨道工具 向前选择轨道工具…...

Linux系统 —— 进程系列 - 进程状态 :僵尸与孤儿

目录 1. 进程状态的概念 1.1 课本上的说法&#xff1a;名词提炼 1.2 运行&#xff0c;阻塞和挂起 1.2.1 什么叫做运行状态&#xff08;running&#xff09;&#xff1f; 1.2.2 什么叫做阻塞状态&#xff08;sleeping&#xff09;&#xff1f; 1.2.3 什么叫做挂起状态&…...

linux/centOS7用户和权限管理笔记

linux系列中可以&#xff1a; 配置多个用户配置多个用户组用户可以加入多个用户中 linux中关于权限的管理级别有2个级别&#xff0c;分别是&#xff1a; 针对用户的权限控制针对用户组的权限控制 一&#xff0c;root用户 root用户拥有最大的系统操作权限&#xff0c;而普通…...

网站优化月总结/就业seo好还是sem

一 PON基础知识 1.1 PON技术概念 PON(Passive Optical Network)即无源光网络&#xff0c;一种基于点到多点(P2MP)拓朴的技术。“无源”指ODN(光分配网络)不含有任何电子器件及电子电源&#xff0c;ODN全部由光分路器Splitter等无源器件组成&#xff0c;不需要贵重的有源电子设…...

wordpress怎么打删除线/谷歌浏览器入口

# 获取我的订单元素class属性值get_class_name driver.find_element_by_link_text(我的订单).get_attribute(class)# 判断class属性值是否为activeself.assertEqual(at,uactive) 转载于:https://www.cnblogs.com/liuliu-word/p/9930209.html...

知名网站建设公/seo人才招聘

作者踩了各个大坑&#xff0c;得此精华 注意点1&#xff1a;安装Pycharm 安装Pycharm应当勾选添加路径选项。 以免最后需要手动添加环境变量。 注意点2:安装python 需要安装python3.6~3.9&#xff0c;3.6或3.10不行。 高版本或低版本无法匹配PyQt5。 注意点3:新建一个proj…...

炉火建站/整站优化seo

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者前言在上一篇文章中&#xff0c;壹哥给大家讲解了Java中的数据类型&#xff0c;从此大家就知道了基本类型和引用类型&#xff0c;尤…...

wordpress EDD Alipay/关键词seo排名公司

在亚马逊云科技&#xff0c;有着这么一群人&#xff0c;他们经常被认为只会写代码&#xff0c;而不善言辞。但这只是大家对他们的误解。他们的工作不仅需要懂开发、善沟通&#xff0c;还需要能够dive deep用户的需求。他们就是亚马逊云科技的 Software Dev Engineer&#xff01…...

做网站的费用/如何把一个关键词优化到首页

电厂的安全问题一直是发电企业高度关注的问题&#xff0c;安全隐患大体上分为21大类&#xff0c;包括火灾、爆炸、中毒和窒息、水害、坍塌、滑坡、泄漏、腐蚀、触电、坠落、机械伤害、煤与瓦斯突出、公路设施伤害、公路车辆伤害、铁路设施伤害、铁路车辆伤害、水上运输伤害、港…...