SpringCloud-深度理解ElasticSearch

一、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都为用户提供了一种高效、可靠的解决方案。

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

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

相关文章

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

需要准备材料:Origin、PL Decay数据txt文件 首先打开Origin画图软件 导入数据,按照下图箭头操作直接导入 双击你要导入的PL Decay的txt数据文件,然后点OK 继续点OK 数据导入后首先删除最大光子数之前的无效数据,分析的时候用…

每天五分钟计算机视觉:图像数据不足带来的问题和解决办法

本文重点 在当今的数字时代,图像数据的应用已经渗透到各个领域,包括但不限于计算机视觉、机器学习、自动驾驶、医疗诊断等。然而,当图像数据不足时,会引发一系列问题,对相关应用产生负面影响。 尤其是计算机视觉领域,图像数据尤为珍贵和稀缺,如果计算机视觉的任务中,如…

政务云安全风险分析与解决思路探讨

1.1概述 为了掌握某市政务网站的网络安全整体情况,在相关监管机构授权后,我们组织人员抽取了某市78个政务网站进行安全扫描,通过安全扫描,对该市政务网站的整体安全情况进行预估。 1.2工具扫描结果 本次利用漏洞扫描服务VSS共扫…

基于Spring Boot的疗养院管理系统的设计与实现

传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装疗养院管理系统软件来发挥其高效地信息处理的作用,可以…

使用html+css制作一个发光立方体特效

使用htmlcss制作一个发光立方体特效 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Documen…

【机器学习300问】36、什么是集成学习?

一、什么是集成学习&#xff1f; &#xff08;1&#xff09;它的出现是为了解决什么问题&#xff1f; 提高准确性&#xff1a;单个模型可能对某些数据敏感或者有概念偏见&#xff0c;而集成多个模型可以提高预测的准确性。让模型变稳定&#xff1a;一些模型&#xff0c;如决策…

Css基础——溢出文字省略号表达

1. 单行文本溢出显示省略号&#xff1a; 1.1、方法&#xff1a; 1. 先强制一行内显示文本*/ white-space: nowrap; &#xff08; 默认 normal 自动换行&#xff09; 2. 超出的部分隐藏*/ overflow: hidden; 3. 文字用省略号替代超出的部分*/ text-overflow: ellipsis; 1.2、代…

【他山之石】BlueLM蓝心大模型的落地

note 预训练&#xff1a;我们采用了混合精度训练以及梯度缩放策略&#xff0c;因为这可以减少训练周期&#xff0c;训练周期较少会节省模型训练所需的时间和资源。选择回放训练能够让模型定向学会一类知识信息。Loss 预测确保在训练过程前对损失进行估计&#xff0c;以保证训练…

javaweb day16 mysql

mysql 安装&#xff1a; 企业开发使用方法 安装虚拟机代替服务器 数据模型 创建数据库 写法 sql简介

KNN算法对鸢尾花进行分类:添加网格搜索和交叉验证

优化——添加网格搜索和交叉验证 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection imp…

GNN/GCN自己学习

一、图的基本组成 V&#xff1a;点&#xff08;特征&#xff09; E&#xff1a;边 U&#xff1a;图&#xff08;全局特征&#xff09; 二、用途 整合特征&#xff08;embedding)&#xff0c;做重构 三、邻接矩阵 以图像为例&#xff0c;每个像素点周围都有邻居&#xff0c;…

Composer创建ThinkPHP无法获取最新版本的问题

composer安装TP&#xff08;截止目前最新版本为8.0&#xff09; composer create-project topthink/think tp 一开始直接给我安装成TP6了&#xff0c;原因就是我系统的PHP版本不是8.0以上&#xff0c;所以不支持最新的TP版本&#xff0c;就会默认安装之前稳定的版本。解决这个…

说说JVM的垃圾回收机制

简介 垃圾回收机制英文为Garbage Collection, 所以我们常常称之为GC。那么为什么我们需要垃圾回收机制呢&#xff1f;如果大家有了解过Java虚拟机运行时区域的组成(JVM运行时存在&#xff0c;本地方法栈&#xff0c;虚拟机方法栈&#xff0c;程序计数器&#xff0c;堆&#xf…

linux安全--CentOS7安装Tomcat,远程管理ManagerApp

目录 1.Tomcat安装 2.Tomcat远程管理 1.Tomcat安装 下载安装包并解压 tar xf apache-tomcat-7.0.54.tar.gz -C /usr/local/apache-tomcat_7.0.54/tomcat启停 启动 ./startup.sh 停止 ./shutdown.sh 2.Tomcat远程管理 找到tomcat文件夹中webapps/manager/META-INF/contex…

(黑马出品_高级篇_04)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_高级篇_04&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术——可靠性消息服务 今日目标服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.1.1.修改配置1.1.2.定义Return回调1.1.3.定义ConfirmCallbac…

temu英国电商市场洞察:2月份商品销售数据分析Python数据采集Api

文章目录 引言可视化分析数据展示商品类目占比分析销售额分析价格区间占比分析各类目新品占比分析 写在最后 引言 在美国市场稳步增长基础上&#xff0c;Temu也不断加快全球步伐&#xff0c;现已进入47个国家&#xff0c;光23年9月份就进驻了10个国家&#xff0c;创造单月扩张国…

FileZillaClient连接被拒绝,无法连接

1.ECONNREFUSED - 连接被服务器拒绝 2、无法连接FZ时&#xff0c;判断没有ssh 更新源列表&#xff1a; sudo apt-get update 安装 openssh-server &#xff1a;sudo apt-get install openssh-server 查看是否启动ssh&#xff1a;sudo ps -e | grep ssh

2024 前端javaScript+ES6

JavaScript 基础 1、基本数据类型&#xff1a; 1.1 基本数据类型&#xff1a; Number&#xff08;数值&#xff09;&#xff1a;表示数字&#xff0c;包括整数和浮点数。例如&#xff1a;5、3.14。 String&#xff08;字符串&#xff09;&#xff1a;表示文本数据&#xff…

hanlp,pyhanlp 实现 NLP 任务

目录 区别 hanlp 代码使用 pyhanlp 代码使用 在线体验&#xff1a;命名实体识别 | 在线演示 区别 hanlp&#xff1a;是 githun 官方文档提供的使用方法&#xff0c;也就是在线的&#xff0c;调用 api 的方式去实现的&#xff0c;可以自己申请 token&#xff0c;接口分为 RE…

SSA-LSTM多输入回时序预测 | 樽海鞘优化算法-长短期神经网络 | Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&a…