【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验
- 1.Elasticsearch 的优势
- 1.1 Elasticsearch 解决的核心问题
- 1.1.1 传统方案的短板
- 1.1.2 Elasticsearch 的解决方案
- 1.2 与大数据组件的对比优势
- 1.3 关键优势技术支撑
- 1.4 Elasticsearch 的竞品
- 1.4.1 全文搜索领域
- 1.4.2 日志分析领域
- 1.4.3 通用数据库
- 1.4 真实案例:为什么选择 Elasticsearch?
- 案例1:电商搜索
- 案例2:日志监控
- 1.5 总结:Elasticsearch 的不可替代性
- 2.Elasticsearch 常见组件搭配与实践经验
- 2.1 常见组件搭配
- 2.1.1 数据采集层
- 2.1.2 数据存储与分析
- 2.1.3 监控与管理
- 2.1.4 扩展功能
- 2.2 优秀实践经验
- 2.2.1 集群规划
- 2.2.2 性能优化
- 2.2.3 可靠性保障
- 2.2.4 安全实践
- 2.3 典型应用场景案例
🚀 Elasticsearch 解决了什么实际问题?大数据的组件有很多,比如 HDFS 也能存储数据,Hive 也能查询数据,Elasticsearch 的优势在哪里,为什么有这种优势?它的竞品是什么?
1.Elasticsearch 的优势
Elasticsearch 之所以在大数据生态中占据独特地位,是因为它解决了 海量数据的实时搜索和分析 这一核心痛点。它与 HDFS、Hive 等组件有本质区别,下面通过实际场景对比分析其优势、适用场景和竞品。
1.1 Elasticsearch 解决的核心问题
1.1.1 传统方案的短板
假设你运营一个电商平台,需要实现以下功能:
- 场景1:用户搜索 “
红色 连衣裙 夏季
”,要求结果在 100ms 内返回,且能按销量、价格排序。 - 场景2:实时统计当前 1 小时内 “
手机
” 关键词的搜索热度变化。
如果用传统方案:
- HDFS + Hive:数据存得下,但查询延迟高(分钟级),无法实时响应。
- MySQL:全文搜索效率低(
LIKE "%连衣裙%"
会全表扫描),数据量大时性能崩溃。
1.1.2 Elasticsearch 的解决方案
- 毫秒级搜索:倒排索引 + 分布式计算,快速返回结果。
- 实时分析:支持聚合(
Aggregation
)和近实时(NRT
,Near Real-Time
)数据刷新。 - 高扩展性:数据自动分片,可横向扩展至数百节点。
✅ 典型应用场景:搜索引擎、日志分析(ELK)、电商商品检索、应用性能监控(APM)、地理位置查询等。
1.2 与大数据组件的对比优势
组件 | 核心能力 | Elasticsearch 优势 | 适用场景差异 |
---|---|---|---|
HDFS | 分布式存储 | ES 不仅存储,还能实时检索和分析数据 | HDFS 适合离线批处理(如 MapReduce) |
Hive | SQL 查询 | ES 支持全文搜索、相关性评分,延迟低至毫秒级 | Hive 适合离线报表(T+1) |
MySQL | 事务处理 | ES 支持非结构化数据(如日志、JSON),横向扩展易 | MySQL 适合 OLTP(订单、用户管理) |
Solr | 全文搜索 | ES 分布式设计更成熟,实时性更强 | Solr 更适合静态文档搜索 |
1.3 关键优势技术支撑
- 倒排索引
- 将
关键词 → 文档ID
的映射(类似书籍目录),比数据库的 B 树索引更适合全文搜索。 - 例如搜索 “苹果”,直接定位到包含该词的文档,而非逐行扫描。
- 将
- 分布式架构
- 数据分片(
Shard
)并行处理,扩展性强。 - 副本机制保障高可用。
- 数据分片(
- 近实时(
NRT
)- 数据写入后 1 秒内可查(Hive 需等批量任务完成)。
1.4 Elasticsearch 的竞品
1.4.1 全文搜索领域
- Apache Solr
- 同基于 Lucene,但 ES 更擅长实时性和分布式场景。
- Solr 适合固定数据集(如图书馆目录检索)。
- OpenSearch
- AWS 分支版 ES,功能高度重合,生态兼容。
1.4.2 日志分析领域
- Splunk
- 商业软件,可视化更强,但成本极高(ES + Kibana 可替代大部分功能)。
- Grafana Loki
- 轻量级日志方案,但查询能力弱于 ES。
1.4.3 通用数据库
- MongoDB
- 支持类似 JSON 的文档存储,但全文搜索性能不如 ES。
- ClickHouse
- 列式存储,分析查询快,但不支持全文检索。
🔍 如何选型?
- 需要 实时搜索+分析 → Elasticsearch
- 需要 事务+强一致性 → MySQL / PostgreSQL
- 需要 离线分析 → Hive / Spark
- 需要 低成本日志 → Loki
1.4 真实案例:为什么选择 Elasticsearch?
案例1:电商搜索
- 需求:支持用户输入 “
白色 耐克 运动鞋
” 时,快速返回按销量排序的结果。 - ES 方案:
- 分词器拆解关键词(“
白色
”、“耐克
”、“运动鞋
”)。 - 通过倒排索引定位商品,计算相关性评分(
_score
)。 - 聚合统计销量排序。
- 分词器拆解关键词(“
- 传统数据库:LIKE 查询无法命中组合关键词,且排序慢。
案例2:日志监控
- 需求:实时排查服务器错误日志(如
ERROR 500
)。 - ES 方案:
- 日志实时写入 ES,通过 Kibana 可视化仪表板快速过滤异常。
- HDFS+Hive 方案:需等小时级 ETL 任务完成后才能查询。
1.5 总结:Elasticsearch 的不可替代性
维度 | Elasticsearch | 其他组件 |
---|---|---|
数据特性 | 半结构化/非结构化(JSON、文本、日志) | HDFS / Hive 适合结构化数据 |
延迟 | 毫秒级响应 | Hive / Spark 分钟级 |
查询能力 | 全文搜索、模糊匹配、聚合分析 | MySQL 仅支持基础检索 |
扩展性 | 线性扩展,适合 PB 级数据 | MongoDB 扩展复杂度高 |
总结:Elasticsearch 是 实时搜索和分析 领域的王者,其优势源于倒排索引和分布式架构的深度优化。在大数据生态中,它与 HDFS、Hive 等组件不是替代关系,而是互补协作(例如用 HDFS 存储原始数据,用 ES 提供实时查询)。
2.Elasticsearch 常见组件搭配与实践经验
Elasticsearch 在实际生产环境中通常与其他技术组件协同工作,形成完整的解决方案。以下是一些常见的搭配模式和实践经验。
2.1 常见组件搭配
2.1.1 数据采集层
- Logstash:用于数据收集、解析和转换,然后导入 ES。
- Beats 家族(
Filebeat
,Metricbeat
等):轻量级数据采集器。 - Fluentd / Fluent Bit:作为 Logstash 的替代方案,特别在 K8s 环境中。
- Kafka:作为缓冲层,解决数据高峰和消费者处理能力不匹配问题。
2.1.2 数据存储与分析
- Elasticsearch 集群:核心存储和搜索引擎。
- Kibana:数据可视化与分析界面。
- OpenSearch:AWS 的 ES 分支,兼容 ES 生态。
2.1.3 监控与管理
- Prometheus + Grafana:监控 ES 集群健康状态。
- Cerebro / ElasticHQ:ES 集群管理工具。
- Elastic Alerting:基于 ES 数据的告警系统。
2.1.4 扩展功能
- Redis:作为缓存层减轻 ES 压力。
- PostgreSQL / MySQL:关系型数据存储,与 ES 互补。
- Spark / Flink:大数据处理框架,用于复杂分析。
2.2 优秀实践经验
2.2.1 集群规划
- 节点角色分离:将主节点、数据节点和协调节点分开部署。
- 分片策略:每个分片大小控制在 10 − 50 10-50 10−50 GB,避免过大或过小。
- 冷热架构:热数据用 SSD,冷数据迁移到 HDD 降低成本。
2.2.2 性能优化
- 索引生命周期管理(
ILM
):自动滚动索引、压缩和删除旧数据。 - 合理使用副本:通常 1 − 2 1-2 1−2 个副本足够,平衡可用性和资源消耗。
- 查询优化:使用
filter
代替query
提高性能,避免深度分页。
2.2.3 可靠性保障
- 定期快照:使用 ES 快照功能备份到 S3 等对象存储。
- 容量规划:预留 20 − 30 % 20-30\% 20−30% 的磁盘空间,避免磁盘满导致集群问题。
- 滚动重启:大规模变更时采用滚动方式减少影响。
2.2.4 安全实践
- 启用安全模块:配置 TLS 加密和基于角色的访问控制(RBAC)。
- 网络隔离:将 ES 集群部署在内网,通过 API 网关暴露必要接口。
- 定期审计:监控异常查询和访问模式。
2.3 典型应用场景案例
- 日志分析系统:Filebeat + Kafka + Logstash + ES + Kibana。
- 电商搜索:商品数据从 DB 通过 CDC 同步到 ES,前端应用直接查询 ES。
- 应用性能监控(
APM
):Metricbeat 收集指标 + ES 存储 + Kibana 展示。 - 安全分析(
SIEM
):多种日志源 + ES + 告警规则。
实际部署时,需要根据数据量、查询模式和业务需求进行针对性调优,建议从小规模开始逐步扩展,并建立完善的监控体系。
相关文章:
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...