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

Elasticsearch 第一期:基础的基础概念

前言

Elasticsearch(弹性搜索) ,简称为ES, 它是一个开源的高扩展的分布式全文检索引擎,它提供的功能主要分为:实时存储,实时分析搜索;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

ES核心也是基于 Lucene 来实现所有索引和搜索的功能,其开发者开发ES的初衷是希望通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。

据国际权威的数据库产品评测机构 DB Engines 的统计,在2016年1月,ElasticSearch已超过Solr等,成为排名第一的搜索引擎类应用。

常见概念介绍

Elasticsearch 是 面向文档 的,意味着它存储整个对象或 文档。Elasticsearch 不仅存储文档,而且 索引 每个文档的内容,使之可以被检索。

上面提到了两个关键字--文档,索引。可以说这个两个词是ES的基石。

文档

在以Java为代表的面向对象语言中,对象是操作的基本单位。对于ES而言,文档的概念可以类比对象。不过,有一个区别: 对象仅仅是类似于  hashmap 、字典或者JSON 对象,对象中也可以嵌套其他的对象。在 ES中,术语 文档 有着特定的含义。它是指根对象(最顶层), 这个根对象被序列化成 JSON 并存储到 ES 中,指定了唯一 ID。

上面又提到一个新词——根对象,要理解根对象,那么就需要分析ES文档的内容和组成了。下面展示了一个基础的格式化后的ES文档数据。以key的格式可以划分了两类,带"_"的字段(即文档元数据,如_id,_index等)和普通字段(即真实的内容,如workerName)。

对于一个文档而言,重要的文档源数据三个,_index_type_id。通过这三个元数据即可定位到一个明确的文档。其中_index,也就是前面提到 索引。 索引 可以说是具有共同特性的文档集合。

在一个索引中也可以有多个类别的文档,对于文档类别则使用_type来声明,相当于在索引中对数据进行逻辑分区。在 7.0 之前,每一个索引是可以设置多个 Types 的,每个 Type 会拥有相同结构的文档,但是在 6.0 开始,Type 已经被废除,在 7.0 开始,一个索引只能创建一个 Type,也就是 _doc

当然对于每个文档都有一个唯一标识:_id。id是一个字段串,若不指定,默认是一个Base64 编码的 UUID。

{"_id": "198278367","_index": "hcm_worker","_type": "_doc","_score": 1,  "_source": {"workerName": "小明","workerNo": "U12093","workerTag": [{"key": "年龄","value": [ "30~40"]}]}
}

索引

接下来介绍ES中另一个重要的概念---索引。对于MySQL数据库,索引可以说是最基础的一个概念,ES中的索引与MySQL中的索引概念有所不同。在ES中索引有名词和动词两种含义。

对于名词含义,如前所述,索引是具有共同特性的文档集合。类似于传统关系数据库中的一个 数据表 ,是一个存储关系型数据的地方。

对于动词含义,索引一个文档 就是存储一个文档到一个 索引 (名词)中以便被检索和查询。这非常类似于 SQL 语句中的  INSERT 关键词,除了文档已存在时,新文档会替换旧文档情况之外。

和MySQL使用B+树索引 到指定的列上,来提升数据检索速度。ES也有MySQL索引的类似功能,即倒序索引,用于快速的全文搜索。

关于倒排索引的介绍,下面的博客介绍的很详细,可参考。

ES之倒排索引详解_es倒排索引-CSDN博客

总结

这里只是简单介绍了ES最基础的两个概念:文档和索引。后续的搜索,排序,分布式等等都是基于这两个概念发展的。也会继续学习进行整理。

https://www.cnblogs.com/crazymagic/articles/14512958.html

相关文章:

Elasticsearch 第一期:基础的基础概念

前言 Elasticsearch(弹性搜索) ,简称为ES, 它是一个开源的高扩展的分布式全文检索引擎,它提供的功能主要分为:实时存储,实时分析搜索;本身扩展性很好,可以扩展到上百台服…...

MySQL数据库笔记(二)

第一章 单行函数 1.1 什么是函数 函数的作用是把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在SQL中使用函数,极大地提高了用户对数据库的管理效率。 1.2 定义 操作数据对象。 接受参数返回一个结果。 只对一行进行…...

谷歌邮箱:2024年最全使用指南及技巧

注册谷歌邮箱时遇到麻烦了吗?收件箱乱得让人头疼,找不到提升效率的方法?或者是在处理多个谷歌邮箱账户时感到手忙脚乱? 掌握Gmail邮箱的使用技巧是每个外贸人员都必须学会的,本文将提供一个实用的谷歌邮箱注册和使用指…...

工业设计初学者手册——第四部分:制造工艺

工业设计初学者手册 文章目录 工业设计初学者手册第四部分:制造工艺7. 常见制造工艺介绍7.1 传统制造工艺7.2 现代制造工艺 8. 材料选择与应用8.1 材料的基本分类与特性8.2 材料选择的原则8.3 环保材料的应用 总结 第四部分:制造工艺 7. 常见制造工艺介…...

Scala语言:大数据开发的未来之星 - 零基础到精通入门指南

前言 随着大数据时代的到来,数据量的急剧增长为软件开发带来了新的挑战和机遇。Scala语言因其函数式编程和面向对象的特性,以及与Apache Spark的完美协作,在大数据开发领域迅速崛起,成为该领域的新兴宠儿。本篇将从零基础开始&…...

Springboot整合Zookeeper分布式组件实例

一、Zookeeper概述 1.1 Zookeeper的定义 Zookeeper是一个开源的分布式协调服务,主要用于分布式应用程序中的协调管理。它由Apache软件基金会维护,是Hadoop生态系统中的重要成员。Zookeeper提供了一个高效且可靠的分布式锁服务,以及群集管理…...

Python | 使用Matplotlib生成子图的示例

数据可视化在分析和解释数据的过程中起着举足轻重的作用。Python中的Matplotlib库提供了一个强大的工具包,用于制作各种图表和图表。一个突出的功能是它能够在单个图中生成子图,为以组织良好和结构化的方式呈现数据提供了有价值的工具。使用子图可以同时…...

云原生巡检监控报告

一、巡检概述 本次云原生巡检工作主要围绕云原生平台的稳定性、安全性以及性能进行,通过对平台资源的监控、日志分析以及安全扫描,发现了一些潜在的问题和隐患。巡检工作采用了自动化工具和人工分析相结合的方式,确保了巡检结果的准确性和全…...

Linux系统编程——部分内容补充

回顾 进程 内核相关数据结构 代码和数据,一个可执行程序加载到内存变成进程,不仅仅是把代码和数据加载进去就完事了,得“先描述,再组织”,每个进程都有内核数据结构,地址空间,进程相关页表&a…...

数学建模基础:非线性模型

目录 前言 一、非线性方程组 二、非线性规划 三、微分方程模型 四、非线性模型的应用 五、实例示范:传染病传播模型 实例总结 五、总结 前言 非线性模型用于描述变量之间的非线性关系,相比线性模型,其数学形式更为复杂,但…...

Kotlin 语言基础学习

什么是Kotlin ? Kotiln翻译为中文是:靠他灵。它是由JetBrains 这家公司开发的,JetBrains 是一家编译器软件起家的,例如常用的WebStorm、IntelliJ IDEA等软件。 Kotlin官网 JetBrains 官网 Kotlin 语言目前的现状: 目前Android 已将Kotlin 作为官方开发语言。 Spring 框…...

Kafka 之 KRaft —— 配置、存储工具、部署注意事项、缺失的特性

目录 一. 前言 二. 配置(Configuration) 2.1. 处理者角色(Process Roles) 2.2. 控制器(controller) 2.3. 存储工具(Storage Tool) 2.4. 调试(Debugging&#xff09…...

专业和学校到底怎么选,兴趣和知名度到底哪个重要?

前言 2024高考已经落下帷幕,再过不久就到了激动人心的查分和填报志愿的时刻,在那天到来,小伙伴们就要根据自己的分数选取院校和专业,接下来我就以参加22年(破防年)河南高考的大二生来讲述一下我自己对于如何选取院校和专业的看法以…...

【MySQL】数据库

数据库概述 【MySQL】数据库概述-CSDN博客 数据库基本操作 【MySQL】数据库基本操作-CSDN博客 数据表基本操作 【MySQL】数据表基本操作-CSDN博客 约束 【MySQL】约束-CSDN博客 基本增删改查 【MySQL】基本增删改查-CSDN博客 多表操作 【MySQL】多表操作-CSDN博客 视图 …...

D111FCE01LC2NB70带流量调节派克比例阀

D111FCE01LC2NB70带流量调节派克比例阀 派克比例阀:由于采用(秉圣135陈工6653询3053)电液混合控制技术,响应速度更快、精度更高、控制更平稳。同时,由于采用高质量的材料制造,具有较高的承压能力和抗磨损性…...

buuctf-findKey

exe文件 运行发现这个窗口,没有任何消息 32位 进入字符串就发现了flag{ 左边红色代表没有F5成功 我们再编译一下(选中红色的全部按p) LRESULT __stdcall sub_401640(HWND hWndParent, UINT Msg, WPARAM wParam, LPARAM lParam) {int v5; // eaxsize_t v6; // eaxDWORD v7; /…...

针对oracle系列数据库慢数据量大的问题

-- 确保索引存在 create index idx_risk_assessment_hazard on risk_assessment_hazard(data_time, perception_id); create index idx_risk_dispose_base_info on risk_dispose_base_info(perception_id); -- 使用并行查询和with子句进行优化 explain plan for with t2 as (se…...

Nginx-Rewrite

1、Rewrite的定义 rewrite功能就是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在 server { }, location { }, if { }中,并且只能对域名后边的除去传递的参数外的字符串起作用。 例如location…...

2024 年 Python 基于 Kimi 智能助手 Moonshot Ai 模型搭建微信机器人(更新中)

注册 Kimi 开放平台 Kimi:https://www.moonshot.cn/ Kimi智能助手是北京月之暗面科技有限公司(Moonshot AI)于2023年10月9日推出的一款人工智能助手,主要为用户提供高效、便捷的信息服务。它具备多项强大功能,包括多…...

关于接口多态,何时使用接口名创建对象?何时使用子类创建对象?

接口创建对象只能创建他的实现类,所以会出现两种创建方式: 1、接口 对象名 new 类名 2、子类对象 对象名 new 类名 举个例子,swimming是一个接口,flog是他的一个实现类,重写了swimming的eat()方法 子类对象 对象名…...

深入剖析YOLOv8核心模块:从架构设计到实战应用全解析

1. YOLOv8架构设计揭秘 YOLOv8作为目标检测领域的标杆模型,其架构设计处处体现着工程师的巧思。我第一次拆解它的代码时,最惊艳的是它的模块化设计——就像搭积木一样,每个组件都能灵活替换。核心的Backbone部分采用CSPDarknet53结构&#xf…...

TI DSP BootLoader实战:从Flash分区到安全跳转的工程化指南

1. 为什么需要BootLoader? 想象一下你家的空调遥控器突然需要升级功能,但厂家要求必须拆开外壳用专用设备烧录——这显然不现实。BootLoader就是嵌入式设备的"遥控器升级按钮",让设备在出厂后仍能通过常规接口(如串口、…...

【FastAPI 2.0流式AI响应终极指南】:20年架构师亲授异步SSE/Chunked Transfer实战避坑清单

第一章:FastAPI 2.0流式AI响应面试概览在现代AI应用开发中,面试场景下的实时交互体验正成为关键评估维度。FastAPI 2.0 引入了对原生异步流式响应(StreamingResponse)的深度优化,支持 Server-Sent Events(S…...

终极指南:如何使用Cat-Catch浏览器资源嗅探工具轻松捕获网络媒体资源

终极指南:如何使用Cat-Catch浏览器资源嗅探工具轻松捕获网络媒体资源 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch Cat-Catch(猫抓)是一款强大的浏览器资源嗅探扩…...

QRazyBox:5分钟解决二维码修复难题的专业工具

QRazyBox:5分钟解决二维码修复难题的专业工具 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 二维码已经成为现代生活中无处不在的数字桥梁,但你是否遇到过这样的情况&…...

如何实现精准歌词同步?KRC格式全解析与应用实践

如何实现精准歌词同步?KRC格式全解析与应用实践 【免费下载链接】KuGouMusicApi 酷狗音乐 Node.js API service 项目地址: https://gitcode.com/gh_mirrors/ku/KuGouMusicApi 在音乐应用开发中,歌词显示功能看似简单,实则隐藏着诸多技…...

探索AI原生应用领域向量数据库的无限潜力

探索AI原生应用领域向量数据库的无限潜力关键词:向量数据库、AI原生应用、Embedding、向量相似度、多模态检索、大模型协同、语义理解摘要:当AI从“辅助工具”进化为“原生生产力”,一种专为AI设计的数据库——向量数据库,正在重塑…...

终极指南:如何为Zotero 6.0安装完美夜间模式插件,告别深夜阅读疲劳

终极指南:如何为Zotero 6.0安装完美夜间模式插件,告别深夜阅读疲劳 【免费下载链接】zotero-night Night theme for Zotero UI and PDF 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-night 还在为深夜阅读文献时刺眼的屏幕光线而烦恼吗&a…...

ReACT深度解析四:从数字员工到数字文明——智能体的终极演进与文明级想象

内容定位:​ 未来畅想文章日期:​ 2026-03-26【场景引入】凌晨两点,南京的OpenClaw训练营早已散场,但服务器日志仍在跳动。一个刚被赋予“学习进化”权限的电商客服智能体,在完成今日第317个订单查询后,没有…...

用Logisim搞定六进制计数器:从真值表到同步置数/异步清零的保姆级布线教程

用Logisim搞定六进制计数器:从真值表到同步置数/异步清零的保姆级布线教程 第一次在Logisim里搭建计数器电路时,看着那些密密麻麻的逻辑门和跳线,我盯着屏幕发呆了半小时——明明按照课本上的真值表连接,仿真时却总是卡在某个状态…...