ElasticSearch入门篇

目录

一、 ElasticSearch的定位

二、 什么是倒排索引

三、 什么是全文检索

四、 ElasticSearch的数据存储原理

4.1    ElasticSearch与关系型数据库的数据结构对比

4.2    ElasticSearch的倒排索引原理


一、 ElasticSearch的定位

     ElasticSearch是一款开源的分布式 搜索和数据分析引擎,它专门设计用于处理大规模的文本数据和实现高性能的全文检索,业内简称为es。es使用 倒排索引 和 缓存 等技术,在海量数据中能做到快速的搜索和高效的查询。它的设计目标为:一切为了查询。

二、 什么是倒排索引

         倒排索引是指将文档记录按照分词与文档对应位置的映射关系进行存储,查询时也将查询条件按规则进行分词,用单个分词去查找文档,即根据文档内容查找文档Id,最后将结果按得分评估汇总返回。
 倒排索引的使用分为以下几步:

  1. 将文档内容按照规则进行分词
  2. 建立分词与文档Id的映射关系
  3. 查询时将查询条件进行分词
  4. 利用分词与文档Id的映射关系,根据查询条件的分词去查找结果
  5. 根据查询结果中每个分词出现的频率进行排名、汇总,返回结果

三、 什么是全文检索

     顾名思义,全文检索是根据查询条件在整个文档中进行搜索,例如百度、谷歌的搜索。在全文检索中,首先需要对文本数据进行处理,包括分词、去除停用词等。然后,对处理后的文本数据建立索引,索引会记录每个单词在文档中的位置信息以及其他相关的元数据,如词频、权重等。这个过程通常使用倒排索引(inverted index)来实现,倒排索引将单词映射到包含该单词的文档列表中,以便快速定位相关文档。当用户发起搜索请求时,搜索引擎会根据用户提供的关键词或短语,在建立好的索引中查找匹配的文档。搜索引擎会根据索引中的信息计算文档的相关性,并按照相关性排序返回搜索结果。用户可以通过不同的搜索策略和过滤条件来精确控制搜索结果的质量和范围。

   

四、 ElasticSearch的数据存储原理

4.1    ElasticSearch与关系型数据库的数据结构对比

        索引:es的最大数据隔离单位称为 索引,类似于关系型数据库的数据库概念。ElasticSearch底层是基于Lucene的封装,每一个索引都是一个Lucene实例。

        类型:索引下面的隔离单位称为类型,类似与关系型数据库的”表“。如有一个“人类”的索引,下面类型有“黄种人”、”黑种人“这些类型。在es6以及前的版本中,一个es索引可以有多个类型,在es7中一个索引只能有一个默认的类型"_doc"。到了es8的版本中,已经完全弃用了类型的概念。

       文档:文档可以理解为一条条的记录,在同一个索引中,每个文档都有一个唯一的id。

       字段: 字段可以理解为关系型数据库中的"列"

4.2    ElasticSearch的倒排索引原理

     当数据写入 ES 时,数据将会通过 分词 被切分为不同的 term(词项),ES 将 term 与其对应的文档列表建立一种映射关系,这种结构就是 倒排索引。如下图所示:

         为了进一步提升索引的效率,ES 在 term 的基础上利用 term 的前缀或者后缀构建了 term  index, 用于对 term 本身进行索引,ES 实际的索引结构如下图所示: 

倒排索引中有三个重要部分:

  • term index:词项索引,它是树状结构,决定了倒排索引的物理顺序,存的是分词前缀。因为分词后的词项词典很大,无法全部放入内存,因此设计了一个可以放入内存中的树状结构,提升查询性能
  • term dictionary: 词项词典,分词器分词后的所有词语,按顺序排列
  • posting index:  倒排记录表,里面记录了原始数据表中的记录id,该单词在文档中出现的次数、位置,以及单词开始结束的偏移量

   默认情况下,es的每个字段都会生成一个倒排索引。也可以指定某个字段不生成倒排索引,以节省存储空间,以及提升存储性能,但是这个字段就无法被索引查询。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣算法之滑动窗口题目--水果成篮

文章目录 题目解析不同之处解决办法解决图示 代码 题目解析 首先我们先看一下题目如下图所示 题目意思也比较容易理解其实就是你有一个篮子这个篮子只能装两个不同种类的水果,问你最多能装多少个水果,这里还贴心的弄了一个样列,121 可以看出…

计算机组成原理 运输层

文章目录 运输层运输层协议概述进程之间的通信运输层的两个主要协议运输层的端口 用户数据报协议 UDPUDP 概述UDP 的首部格式 传输控制协议 TCP 概述TCP 最主要的特点TCP 的连接 可靠传输的工作原理停止等待协议连续 ARQ协议 TCP 报文段的首部格式TCP 可靠传输的实现以字节为单…

tcpdump常用命令

tcp首部解析: tcp-首部_tcp首部-CSDN博客 ref: Home | TCPDUMP & LIBPCAP https://www.cnblogs.com/onlyforcloud/p/4396126.html tcpdump 详细使用指南(请尽情食用)_tcpdump指定ip和端口-CSDN博客 【博客192】抓取报文查…

【深度学习目标检测】十五、基于深度学习的口罩检测系统-含GUI和源码(python,yolov8)

YOLOv8是一种物体检测算法,是YOLO系列算法的最新版本。 YOLO(You Only Look Once)是一种实时物体检测算法,其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化,提高了检测速度和准确性。…

八、K8S metrics-server

下载yaml文件 wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml 改名:mv high-availability.yaml metrics-server.yaml 查看镜像地址 查看镜像地址 grep -rn image high-availability.yaml 150: …

【人工智能平台】ubuntu22.04.3部署cube-studio

简介:本次安装是在虚拟机上进行,需要给虚拟机至少分配16GB,分配8GB时系统会卡死。 一、环境: 主机环境:win11(全程科学)vm虚拟机 虚拟机:ubuntu22.04.3桌面版(新装&…

Ventoy:打造你的万能启动 U 盘 | 开源日报 No.146

ventoy/Ventoy Stars: 54.3k License: GPL-3.0 Ventoy 是一个开源工具,用于创建支持 ISO/WIM/IMG/VHD(x)/EFI 文件的可启动 USB 驱动器。其主要功能包括将镜像文件复制到 USB 驱动器并进行引导、一次性复制多个镜像文件并提供引导菜单选择以及在本地磁盘中浏览和引…

基于SSM的高校班级同学录网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Vue组件之间的通信方式都有哪些?

面试官:Vue组件之间的通信方式都有哪些? 一、组件间通信的概念 开始之前,我们把组件间通信这个词进行拆分 组件通信 都知道组件是vue最强大的功能之一,vue中每一个.vue我们都可以视之为一个组件通信指的是发送者通过某种媒体以…

C#灵活的任务调度组件FluentScheduler

FluentScheduler是一个C#的灵活的任务调度组件,支持各类任务调度。网上有很多演示代码,此处记录下来,方便自己查找。 // See https://aka.ms/new-console-template for more information //Console.WriteLine("Hello, World!");us…

Tortoise-orm 使用(一)

创建表 项目基于Vue3.0, FastAPI的模板管理系统,从网上找了各种资源去实践,现在将总结发出来,分享给大家,希望帮助大家少走些弯路。 准备工作 # tortoise-orm pip install tortoise-orm # MySQL pip install tortoise-orm[async…

数据库结构文档生成(通过PDMReader)

将数据库的表结构生成数据库结构文档有三种方法: 1、通过 PDMReader生成文档; 2、使用EZDML 工具生成(下载地址:EZDML - 下载); 3、使用SCREW 插件,通过java代码生成。 本文章先介绍通过PDM…

ZABBIX根据IP列表,主机描述,或IP子网批量创建主机的维护任务

有时候被ZABBIX监控的主机可能需要关机重启等维护操作,为了在此期间不触发告警,需要创建主机的维护任务,以免出现误告警 ZABBIX本身有这个API可供调用(不同版本细节略有不同,本次用的ZABBIX6.*),实现批量化建立主机的维护任务 无论哪种方式(IP列表,主机描述,或IP子网)创建维护…

Cellinx NVT 摄像机 UAC.cgi 任意用户创建漏洞复现

0x01 产品简介 Cellinx NVT IP PTZ是韩国Cellinx公司的一个摄像机设备。 0x02 漏洞概述 Cellinx NVT 摄像机 UAC.cgi接口处存在任意用户创建漏洞,未经身份认证的攻击者可利用此接口创建管理员账户,登录后台可查看敏感信息,使系统处于极不安全的状态。 0x03 复现环境 FO…

Nas群晖中搭建自己的图片库

1、在套件中心下载synology phtotos 2、点击打开,右上角头像设置中配置 3、这样子就是已经完成了,可以把你的图片进行上传 4、嫌弃上传麻烦的,可以直接去根目录复制粘贴 5、访问 这样子就可以直接访问了

Rust-析构函数

所谓“析构函数”(destructor),是与“构造函数”(constructor)相对应的概念。 “构造函数”是对象被创建的时候调用的函数,“析构函数”是对象被销毁的时候调用的函数。 Rust中没有统一的“构造函数”这个语法,对象的构造是直接对每个成员进行初始化完…

系列十一、Spring Security登录接口兼容JSON格式登录

一、Spring Security登录接口兼容JSON格式登录 1.1、概述 前后端分离中,前端和后端的数据交互通常是JSON格式,而Spring Security的登录接口默认支持的是form-data或者x-www-form-urlencoded的,如下所示: 那么如何让Spring Securi…

面试狗面试指南系列(1/5): 做好面试需要的一切准备

面试狗,是一群叛逆的程序员开发的远程面试助手,已经帮1000朋友顺利拿到offer! 它可以: 实时识别面试官语音,自动提取关键问题最先进的GPT4加持,按照方便快速阅读的方式高效组织结果,快速展示重…

洗地机哪个品牌的好用?目前口碑最好的洗地机

近年来,随着科技的不断进步和人们对生活质量要求的提高,洗地机已经成为家庭和商业清洁的必备工具之一。但是随之而来的问题是,市面上的洗地机品牌繁多,质量参差不齐,消费者很难在众多选择中找到一款质量好又耐用的产品…

计算机毕业设计 基于Java的手机销售网站的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…
最新文章