SpringCloud-深度理解ElasticSearch

news2024/10/7 6:49:21

一、Elasticsearch概述

1、Elasticsearch介绍

Elasticsearch(简称ES)是一个开源的分布式搜索和分析引擎,构建在Apache Lucene基础上。它提供了一个强大而灵活的工具,用于全文搜索、结构化搜索、分析以及数据可视化。ES最初设计用于处理大规模的日志数据,但其功能已经扩展到各种用例,包括应用程序搜索、业务分析等。简单来说,ElasticSearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。

ElasticSearch结合kibana、Logstash、Beats, 也就是 Elastic stack (ELK)。被广泛应用在日志数据分析、实时监控等领域。其中,ElasticSearch是elastic stack的核心,负责存储、搜索、分析数据。
在这里插入图片描述


2、ElasticSearch的底层技术

ElasticSearch的底层技术是Lucene。Lucene 是一个由 Apache 公司开发的搜索引擎类库,采用 Java 语言编写,是 Apache 公司的顶级项目。Doug Cutting 于 1999 年首次推出。Lucene 通过倒排索引实现了强大的全文搜索功能。

优势
  1. 易扩展: Lucene 提供了灵活的架构,容易进行定制和扩展,以适应各种搜索需求。

  2. 高性能: 基于倒排索引的搜索机制使得 Lucene 在搜索效率上表现出色,适用于大规模数据的搜索操作。

缺点
  1. Java 语言限制: Lucene 主要采用 Java 编写,因此在非 Java 语言的项目中可能不太方便使用。

  2. 学习曲线陡峭: 对于初学者而言,Lucene 的学习曲线较陡峭,需要一定的时间来熟悉其 API 和使用方式。

  3. 不支持水平扩展: Lucene 在水平扩展方面相对有限,这可能对需要处理大量数据的应用造成一些挑战。

Lucene 作为搜索引擎类库的先驱,为开发者提供了强大的搜索和索引功能。虽然它具有一些限制,但在正确使用和理解的情况下,Lucene 仍然是许多项目中首选的搜索引擎工具之一。


3、ElasticSearch排名

ElasticSearch在搜搜引擎中的排名一直是遥遥领先。
最新搜索引擎排名如下:

  1. Elasticsearch:开源的分布式搜索引擎
  2. Splunk:商业项目
  3. Solr:Apache的开源搜索引擎

二、倒排索引的概念

在理解倒排索引之前,需要了解文档和词条的概念。每一条数据就是一个文档,对文档中的内容分词,得到的词语就是词条。
倒排索引是一种用于快速查找文档的数据结构,与传统的正向索引方式相反。它将每个文档中的单词映射到文档的位置,以便更快速地进行搜索。

1、传统索引(正向索引)

正向索引是按照数据表的记录顺序建立的索引,将文档的每个字段都进行索引,方便按照记录的顺序快速访问。正向索引适用于需要按照记录顺序进行检索的场景。

在这里插入图片描述


2、倒排索引

倒排索引则是按照字段值建立索引,以便于快速查找包含特定字段值的记录。倒排索引适用于需要根据字段值进行检索的场景

在这里插入图片描述


3、正向索引 vs. 倒排索引

在这里插入图片描述

在查询流程中,用户查询的关键词直接匹配倒排索引,从而快速定位包含该关键词的记录。这样的查询流程相比于正向索引,减少了对整个数据表的遍历,提高了查询效率。

倒排索引在处理大量文本数据、搜索引擎等场景中具有显著的优越性,能够提供更快速的检索速度。


三、ElasticSearch相关概念理解

1、ElasticSearch概念

① 节点(Node)

Elasticsearch集群由一个或多个节点组成,每个节点是集群中的一个服务器,负责存储数据并参与集群的索引和搜索功能。

② 索引(Index)

索引是相同类型的文档的集合,它们属于逻辑分组。每个文档都有一个唯一的ID,而索引则为这些文档提供了命名空间。

③ 类型(Type)

在较新的 Elasticsearch 版本中,类型已经逐渐被弃用。在较新的数据模型中,索引通常只包含一个类型。

④ 分片和副本(Shards and Replicas)

为了支持水平扩展和提高冗余性,ES将索引分为多个分片,每个分片是一个独立的索引。此外,每个分片都可以有零个或多个副本,用于提高数据的可用性和容错性。

⑤ 映射(Mapping)
  • 映射是索引中文档的字段约束信息,类似表的结构约束。
  • 映射定义了索引中的数据结构,包括字段的类型、分析器和其他属性。
  • 映射有助于确定如何索引和查询文档中的数据。

2、ES和MySQL的概念对比

从上面的ES的特性里,我们可以看到,ES和MySQL有很多相似的地方,下面是两者相似特性的对比:

MySQLElasticsearch说明
TableIndex索引(index)是文档的集合,类似数据库的表(table)
RowDocument文档(Document)是一条条的数据,类似数据库中的行(Row),文档都是JSON格式
ColumnField字段(Field)是JSON文档中的字段,类似数据库中的列(Column)
SchemaMappingMapping(映射)是索引中文档的约束,例如字段类型约束,类似数据库的表结构(Schema)
SQLDSLDSL是Elasticsearch提供的JSON风格的请求语句,用来操作Elasticsearch,实现CRUD

四、ElasticSearch应用场景

1、ES参与的项目架构

在实际项目中,Elasticsearch(ES)常常与MySQL联用,形成了一种典型的项目架构。MySQL擅长处理事务类型的操作,能够确保数据的安全和一致性。因此,在项目中对于数据的增删改(事务类操作)仍然使用MySQL完成。而Elasticsearch则专注于海量数据的搜索、分析和计算,为项目提供高效的搜索功能。

示例架构如下:
在这里插入图片描述

通过这种架构,项目可以充分利用MySQL的事务处理能力,保障数据的完整性和可靠性。同时,借助Elasticsearch强大的搜索引擎和分析功能,实现对海量数据的快速检索和深度分析。


2、ES应用场景

Elasticsearch在各个领域都有广泛的应用,主要体现在以下几个方面:

① 搜索引擎

ES作为一款强大的全文搜索引擎,广泛应用于构建搜索引擎、文档检索系统等场景。通过对海量文本数据建立倒排索引,ES能够快速、准确地响应用户的搜索请求,为用户提供良好的搜索体验。

② 数据分析

在大数据分析领域,ES被广泛用于存储和分析大规模的日志数据、事件数据等。其强大的聚合和分析能力使得用户能够轻松地进行数据挖掘、可视化分析等操作,从而更好地理解数据背后的信息。

③ 实时监控

ES具有实时索引和搜索的能力,因此在实时监控系统中得到了广泛应用。通过将实时产生的监控数据存储在Elasticsearch中,用户可以及时获取系统的运行状况、异常信息等,实现对系统状态的实时监控。

④ 商业智能

ES也被应用于商业智能领域,支持用户进行复杂的数据分析和报表生成。通过整合多源数据,利用ES的搜索和分析功能,企业可以更好地理解市场趋势、用户行为等信息,为决策提供数据支持。

⑤ 地理信息系统

ES支持地理空间搜索,因此在地理信息系统(GIS)领域有着广泛的应用。用户可以利用ES存储和检索与地理位置相关的数据,实现空间数据的快速查询和分析。

总体而言,Elasticsearch的强大搜索和分析能力使其成为各行业解决大数据存储、搜索和分析难题的首选工具。


五、Elasticsearch总结

Elasticsearch(ES)作为一款开源、高性能的搜索引擎和分析工具,具有广泛的应用前景。通过本文的介绍,我们深入了解了Elasticsearch的基本概念、原理以及在实际项目中的应用场景。以下是对Elasticsearch的总结:

1、强大的搜索引擎功能

Elasticsearch以其卓越的全文搜索引擎功能而著称,能够快速、准确地响应用户的搜索请求。通过倒排索引等技术,ES实现了高效的文本搜索,广泛应用于构建搜索引擎、文档检索系统等场景。

2、高效的数据分析和聚合能力

在大数据分析领域,Elasticsearch通过实时索引和搜索的机制,支持对海量数据进行快速的分析和聚合。其灵活的查询语言和丰富的聚合功能使得用户能够轻松进行数据挖掘、可视化分析等操作。

3、实时监控和可视化

ES具有实时索引和搜索的特性,因此在实时监控系统中得到了广泛应用。通过将实时产生的监控数据存储在Elasticsearch中,用户可以及时获取系统的运行状况、异常信息等,实现对系统状态的实时监控。

4、多领域的应用场景

Elasticsearch不仅在搜索引擎领域有着出色的表现,还在数据分析、商业智能、实时监控、地理信息系统等多个领域取得了成功的应用。其灵活性和可扩展性使得ES成为解决大数据存储、搜索和分析难题的理想工具。

5、与MySQL等数据库的协同应用

在实际项目中,ES与传统关系型数据库如MySQL协同应用,形成了一个有机的整体。MySQL负责事务型操作,确保数据的安全和一致性,而Elasticsearch则专注于搜索和分析,提供高效的全文搜索和大数据处理能力。

综合而言,Elasticsearch以其卓越的性能和丰富的功能,在大数据时代发挥着越来越重要的作用。无论是构建搜索引擎、实现实时监控,还是进行复杂的数据分析,Elasticsearch都为用户提供了一种高效、可靠的解决方案。

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

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

相关文章

ARM和AMD介绍

一、介绍 ARM 和 AMD 都是计算机领域中的知名公司,它们在不同方面具有重要的影响和地位。 ARM(Advanced RISC Machine):ARM 公司是一家总部位于英国的公司,专注于设计低功耗、高性能的处理器架构。ARM 架构以其精简指…

Vue前端开发记录(一)

本篇文章中的图片均为深色背景,请于深色模式下观看 说明:本篇文章的内容为vue前端的开发记录,作者在这方面的底蕴有限,所以仅作为参考 文章目录 一、安装配置nodejs,vue二、vue项目目录结构三、前期注意事项0、组件1、数不清的报…

一文速通ESP32(基于MicroPython)——含示例代码

ESP32 简介 ESP32-S3 是一款集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE) 的 MCU 芯片,支持远距离模式 (Long Range)。ESP32-S3 搭载 Xtensa 32 位 LX7 双核处理器,主频高达 240 MHz,内置 512 KB SRAM (TCM),具有 45 个可编程 GPIO 管…

IDEA 多个git仓库项目放一个窗口

1、多个项目先通过新建module或者CtrlAltShiftS 添加module引入 2、重点是右下角有时候git 分支视图只有一个module的Repositories。这时候需要去设置把多个git仓库添加到同一个窗口才能方便提交代码。

十五、自回归(AutoRegressive)和自编码(AutoEncoding)语言模型

参考自回归语言模型(AR)和自编码语言模型(AE) 1 自回归语言模型( AR) 自回归语言模型(AR)就是根据上文内容(或下文内容)预测下一个(或前一个&…

微信小程序(五十八)分步表单多页面传值

注释很详细,直接上代码 上一篇 新增内容: 1.分步表单传值 2.伪数据生成 源码: app.json {"pages": ["pages/index/index","pages/building/building","pages/room/room","pages/logs/logs&quo…

整数和浮点数在内存中是如何存储的?

1.整数在内存中的存储 首先数据在内存中都是以二进制的形式存储的,而整数在内存中也是以二进制的形式存储的,而整数的表示形式有三种,分别是源码,反码,补码,而整数在内存中是以补码的形式存放的。 三种表示…

图文并茂!在Oracle VM VirtualBox上安装Ubuntu虚拟机的详细步骤指南

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

CTFHUB-web-信息泄漏

题目所在位置:技能树->web->信息泄漏 目录遍历 打开题目,我们进入的是这个页面 翻译过来就是 得到的信息就是:flag要在这些目录里面寻找,我们直接一个一个点开查看就行 发现得到一个flag.txt,点击打开得到flag …

Python之requests实现github模拟登录

文章目录 github 模拟登录前言模拟登录流程抓包操作查看登录表单的内容登录操作 模拟登录操作在 main函数的调用获得 auth_token调用/session接口登录处理检测登录是否成功 总结: github 模拟登录 前言 前面学习了requests模块的基础学习后,接下来做一个…

upload-labs通关方式

pass-1 通过弹窗可推断此关卡的语言大概率为js,因此得出两种解决办法 方法一 浏览器禁用js 关闭后就逃出了js的验证就可以正常php文件 上传成功后打开图片链接根据你写的一句话木马执行它,我这里采用phpinfo() 方法二 在控制台…

【高通camera hal bug分析】高通自带相机镜像问题

首先打了两个log,一个是开启镜像的log,还有一个是没有开启镜像的log,如果我们开启镜像以后,观察开启镜像log发现 , 这段代码走的没有任何问题,因为Flip的值等于1了。 关闭镜像log如下: 如果我们不开启镜像…

21 OpenCV 直方图均衡化

文章目录 直方图概念均衡的目的equalizeHist 均衡化算子示例 直方图概念 图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。 均衡的目的…

自定义组件

1. 组件 ① 在项目的根目录中,鼠标右键,创建 components -> test 文件夹 ② 在新建的 components -> test 文件夹上,鼠标右键,点击“新建 Component” ③ 键入组件的名称之后回车,会自动生成组件对应的 4 个文件…

JAVA实战开源项目:高校学院网站(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学院院系模块2.2 竞赛报名模块2.3 教育教学模块2.4 招生就业模块2.5 实时信息模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学院院系表3.2.2 竞赛报名表3.2.3 教育教学表3.2.4 招生就业表3.2.5 实时信息表 四、系…

USB打印机改网络打印机

解决传统SMB缺陷可跨平台设备使用。 1、安装deepin 如何安装 – 深度科技社区 2、配置IP地址 vi /etc/network/interfaces && systemctl restart networking 3、安装程序上传到服务器并解压。运行0Dinstalld目录下文件 sh 0Dinstalld/0installdd.sh http://XX.XX.XX…

设计模式在芯片验证中的应用——装饰器

一、装饰器模式 装饰器模式(Decorator)是一种结构化软件设计模式,它提供了一种通过向类对象添加行为来修改类对象的方法,而不会影响同一类的其它对象行为。该模式允许在不修改抽象类的情况下添加类功能。它从本质上允许基类代码对不可预见的修改具有前瞻…

【Vue】Request模块 - axios 封装Vuex的持久化存储

📝个人主页:五敷有你 🔥系列专栏:Vue ⛺️稳中求进,晒太阳 Request模块 - axios 封装 使用axios来请求后端接口,一般会对axios进行一些配置(比如配置基础地址,请求响应拦截器…

26-Java访问者模式 ( Visitor Pattern )

Java访问者模式 摘要实现范例 访问者模式(Visitor Pattern)使用了一个访问者类,它改变了元素类的执行算法,通过这种方式,元素的执行算法可以随着访问者改变而改变访问者模式中,元素对象已接受访问者对象&a…

【零基础学习06】嵌入式linux驱动中PWM驱动基本实现

大家好,今天给大家分享一下,如何利用PWM外设来实现LCD背光调节,本次实验使用Linux系统中PWM控制器以及PWM子系统来控制对应的功能。 第一:设备树下PWM控制节点 PWM对应的节点信息如下: pwm3: pwm@02088000 {compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm…