ElasticSearch入门篇

news2024/11/16 7:20:39

目录

一、 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.coloradmin.cn/o/1390899.html

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

相关文章

【Linux终端工具】Tmux的使用教程,如何正确使用Tmux

文章目录 入门tmux什么是tmux?安装tmux快速启动tmux基本操作入门1. 分离与退出2. 帮助信息3. 新建会话4. 重新接入会话5. 窗格操作 进阶操作1. 会话管理2. 切换窗口3. 窗格间切换 总结 入门tmux 什么是tmux? tmux是一款终端复用器,它允许你…

一、ArcGIS Pro SDK for Microsoft .NET 开发环境配置

ArcGIS Pro二次开发需要的工具: 1.Visual Studio 2.ArcGIS Pro SDK 一、Visual Studio安装 经过查阅资料,ArcGIS Pro3.0版本需要安装Visual Studio2022版,因为只有22版的才会有有ArcGIS Pro3.0以上版对应ArcGIS Pro SDK,因此&…

MySQL核心SQL

一.结构化查询语言 SQL是结构化查询语言(Structure Query Language),它是关系型数据库的通用语言。 SQL 主要可以划分为以下 3 个类别: DDL(Data Definition Languages)语句 数据定义语言,这…

通过Canal实现缓存同步

文章目录 1.数据同步策略2.初始Canal3.安装Canal4.监听Canal 1.数据同步策略 2.初始Canal 3.安装Canal 见文章安装Canal详情 4.监听Canal

【Web】websocket应用的是哪个协议

🍎个人博客:个人主页 🏆个人专栏:Web ⛳️ 功不唐捐,玉汝于成 前言 在当今互联网时代,实时性和即时通讯成为网络应用日益重要的一部分。WebSocket 协议作为一种创新性的通信协议,极大地改善了…

网页设计(八)HTML5基础与CSS3应用

一、当当网企业用户注册页面设计 当当网企业用户注册页面 改版后当当网企业用户注册页面 <!-- prj_8_1.html --> <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>当当网企业用户注册页面设计</title><s…

圈小猫游戏HTML源码

源码介绍 圈小猫游戏html源码&#xff0c;HTMLCSSJS,记事本可以打开修改内容&#xff0c;电脑本地双击index.html即可运行&#xff0c;也可以上传到服务器上面运行&#xff0c;喜欢的同学可以拿去使用 下载地址 蓝奏云&#xff1a;https://wfr.lanzout.com/iFkVc1lb5akj CS…

【MATLAB源码-第113期】基于matlab的孔雀优化算法(POA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 POA&#xff08;孔雀优化算法&#xff09;是一种基于孔雀羽毛开屏行为启发的优化算法。这种算法模仿孔雀通过展开其色彩斑斓的尾羽来吸引雌性的自然行为。在算法中&#xff0c;每个孔雀代表一个潜在的解决方案&#xff0c;而…

NFS(Network File System 网络文件服务)

一&#xff0c;nfs 简介 1&#xff0c;nfs 性质 NFS&#xff08;Network File System 网络文件服务&#xff09; 文件系统&#xff08;软件&#xff09;文件的权限 NFS 是一种基于 TCP/IP 传输的网络文件系统协议 通过使用 NFS 协议&#xff0c;客户机可以像访问本地目录一样…

找不到msvcr100.dll怎么办?msvcr100.dll丢失的解决方法

在面对计算机系统中“msvcr100.dll”文件缺失这一常见问题时&#xff0c;用户可能会遇到应用程序无法正常启动或运行的情况。为了解决这一困扰广大用户的难题&#xff0c;本文将详细介绍并解析找不到“msvcr100.dll”文件的5种有效解决方法。 一、了解一下msvcr100.dll是什么&a…

[论文精读]Few-shot domain-adaptive anomaly detection for cross-site brain images

论文网址&#xff1a;Few-shot domain-adaptive anomaly detection for cross-site brain images | IEEE Journals & Magazine | IEEE Xplore 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有…

怎么修改或移除WordPress后台仪表盘概览底部的版权信息和主题信息?

前面跟大家分享『WordPress怎么把后台左上角的logo和评论图标移除&#xff1f;』和『WordPress后台底部版权信息“感谢使用 WordPress 进行创作”和版本号怎么修改或删除&#xff1f;』&#xff0c;其实在WordPress后台仪表盘的“概览”底部还有一个WordPress版权信息和所使用的…

鸿蒙入门实战-ArkTS开发

声明式UI基本概念 应用界面是由一个个页面组成&#xff0c;ArkTS是由ArkUI框架提供&#xff0c;用于以声明式开发范式开发界面的语言。 声明式UI构建页面的过程&#xff0c;其实是组合组件的过程&#xff0c;声明式UI的思想&#xff0c;主要体现在两个方面&#xff1a; 描述…

Simulink简介

Simulink 是一个模块图环境&#xff0c;用于多域仿真以及基于模型的设计。它支持系统级设计、仿真、自动代码生成以及嵌入式系统的连续测试和验证。Simulink 提供图形编辑器、可自定义的模块库以及求解器&#xff0c;能够进行动态系统建模和仿真。Simulink 与 MATLAB 相集成&am…

EChars

1.引入 Apache ECharts <!DOCTYPE html> <html><head><meta charset"utf-8" /><!-- 引入刚刚下载的 ECharts 文件 --><script src"echarts.js"></script></head> </html> 2. <!-- 为 ECharts 准…

浅谈电动汽车充电站箱变电气安全物联监测系统设计与应用

摘 要:基于物联网技术架构提出了一种适用于电动汽车充电站箱变的电气安全物联监测系统设计方案。该系统由电气安全智能感知设备、通信网关、电气安全物联网监测平台等构成&#xff0c;可支持充电站箱变充电桩出线回路电流、电缆 温度、剩余电流、故障电弧、短路电流等数据采集监…

zabbix其他配置

自动发现 zabbix server 主动的去发现所有的客户端&#xff0c;然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数量多&#xff0c;zabbix server 登记耗时较久&#xff0c;且压力会较大。 systemctl disable --now firewalld setenforce 0 hostnamectl se…

C++I/O流——(4)格式化输入/输出(第一节)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 含泪播种的人一定能含笑收获&#xff…

搜维尔科技:SenseGlove Nova 2力反馈技术手套,虚拟培训的沉浸感达到新高度!

SenseGlove Nova 2-虚拟培训的沉浸感达到新高度&#xff01; 通过集成主动接触反馈&#xff0c;Nova 2 使用户能够在手掌中感知虚拟现实物体的感觉。虚拟训练、研究和多人互动现在感觉比以往更加自然。这项创新增强了与整个手掌接触的任何虚拟物体的真实感。使用第一款也是唯一…

HarmonyOS之sqlite数据库的使用

从API Version 9开始&#xff0c;鸿蒙开发中sqlite使用新接口ohos.data.relationalStore 但是 relationalStore在 getRdbStore操作时&#xff0c;在预览模式运行或者远程模拟器运行都会报错&#xff0c;导致无法使用。查了一圈说只有在真机上可以正常使用&#xff0c;因此这里…