【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.1.2典型应用场景:日志分析、实时搜索、推荐系统
👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路
文章大纲
- 为什么选择Elasticsearch?——典型应用场景深度解析
- 1. 引言
- 2. 日志分析:海量数据的实时洞察
- 2.1 行业痛点
- 2.2 ES解决方案
- 关键技术实现:
- 2.3 性能对比
- 3. 实时搜索:毫秒级响应与精准结果
- 3.1 电商搜索案例
- ES实现方案:
- 3.2 性能数据
- 4. 推荐系统:个性化服务的核心引擎
- 4.1 视频平台推荐案例
- ES核心作用:
- 4.2 业务效果
- 5. 总结与展望
- 核心优势总结
- 未来演进方向
为什么选择Elasticsearch?——典型应用场景深度解析
1. 引言
在数据爆炸的时代,企业面临三大核心挑战:
- 海量数据(每天
TB/PB级增长) - 实时性要求(用户容忍度低于1秒)
- 复杂查询需求(聚合/过滤/相关性排序)
Elasticsearch(简称ES)凭借其分布式架构、倒排索引和**近实时搜索(Near Real-Time,NRT)**特性,成为解决这些问题的首选工具。下表展示了ES与传统数据库的核心差异:
| 特性 | Elasticsearch | 传统关系型数据库 |
|---|---|---|
| 数据结构 | 半结构化文档存储 | 结构化表存储 |
| 扩展方式 | 水平扩展(无上限) | 垂直扩展(有限) |
| 查询速度 | 毫秒级响应 | 秒级响应 |
| 数据规模 | PB级轻松处理 | TB级即遇瓶颈 |
| 搜索功能 | 全文检索/模糊匹配 | 精确匹配为主 |
2. 日志分析:海量数据的实时洞察
2.1 行业痛点
- 数据规模:某电商平台
每天产生2TB日志(访问日志/错误日志/交易日志) - 时效性需求:故障排查需在5分钟内定位问题
- 分析复杂度:需同时实现聚合统计(如错误码分布)和明细查询
2.2 ES解决方案
通过ELK Stack(Elasticsearch+Logstash+Kibana)构建日志分析系统:

关键技术实现:
-
Index Lifecycle Management (ILM)
热节点(SSD):存储最近3天日志,支持高速查询温节点(HDD):存储3-30天日志,查询频率较低冷节点(归档):存储30天以上日志,仅支持只读
-
动态映射(Dynamic Mapping)
自动识别日志字段类型(如将timestamp识别为date类型) -
聚合分析
GET logs-*/_search {"aggs": {"error_codes": {"terms": { "field": "error_code.keyword" }}} }
2.3 性能对比
| 指标 | 传统方案(Hadoop+Hive) | ES方案 |
|---|---|---|
| 数据入库延迟 | 15-30分钟 | 1秒内 |
| 查询响应时间 | 分钟级 | 200ms以内 |
| 存储成本(PB级) | 0.5元/GB/月 | 0.3元/GB/月 |
| 运维复杂度 | 高(需Hadoop专家) | 低(开箱即用) |
3. 实时搜索:毫秒级响应与精准结果
3.1 电商搜索案例
某跨境电商平台需求:
- 支持
10万QPS的搜索请求 - 平均响应时间<500ms
- 支持多语言分词(中/英/日/韩)
ES实现方案:
-
倒排索引优化
- 对商品标题字段配置
edge_ngram分词器- 示例:iPhone → [“i”, “ip”, “iph”, “iPho”…]
- 提升前缀匹配效率(如搜索"ipho"快速匹配iPhone)
- 对商品标题字段配置
-
分片策略
- 总数据量:5TB(约2亿商品)
- 分片数:20个主分片 + 20副本分片
- 每个节点承载4个分片(物理机配置:64核/256GB/SSD)
-
相关性排序
使用BM25算法优化搜索质量:BM25 算法基于概率检索模型,核心思想是计算查询语句中的每个词与文档的相关性得分,然后将这些得分进行累加,从而得到文档与查询语句的总体相关性得分,以此来对检索结果进行排序。
{"query": {"match": {"title": {"query": "智能手机","boost": 2.0 // 提升标题字段权重}}} }
3.2 性能数据
| 指标 | 优化前(MySQL) | 优化后(ES) |
|---|---|---|
| 平均响应时间 | 1200ms | 230ms |
| 吞吐量(QPS) | 3,000 | 82,000 |
| 排序准确率(CTR) | 18% | 34% |
4. 推荐系统:个性化服务的核心引擎
4.1 视频平台推荐案例
某视频平台需求:
- 根据用户历史行为(观看/收藏/评分)推荐内容
- 实时更新用户画像(延迟<1分钟)
支持AB测试(多算法策略并行)
ES核心作用:
-
用户画像存储
使用嵌套文档存储用户兴趣标签:{"user_id": "u1001","interests": [{ "tag": "科幻电影", "weight": 0.92 },{ "tag": "悬疑剧", "weight": 0.87 }],"last_watched": "2023-10-05T14:30:00Z" } -
实时向量检索
结合Elasticsearch的dense_vector字段:- 使用
BERT模型生成视频内容向量(768维)BERT(Bidirectional Encoder Representations from Transformers)基于Transformer架构,是由谷歌在 2018 年提出的预训练语言模型,它在自然语言处理领域引起了巨大的变革。- 在
BERT之前,许多语言模型都是单向的,只能根据前面的词来预测下一个词。而 BERT 的提出旨在通过双向表征学习,捕捉文本中更丰富的上下文信息,从而提升模型在各种自然语言处理任务中的表现。
- 计算用户向量与内容向量的余弦相似度
- 使用
-
混合推荐策略
GET videos/_search {"query": {"function_score": {"query": { "match": { "genre": "科幻" } },"functions": [{"filter": { "range": { "release_year": { "gte": 2020 } } },"weight": 2},{"script_score": {"script": "cosineSimilarity(params.query_vector, 'embedding') + 1.0","params": { "query_vector": [0.12, -0.24, ..., 0.08] }}}]}} }
4.2 业务效果
| 指标 | 实施前 | 实施后 |
|---|---|---|
| 用户平均观看时长 | 48分钟/天 | 72分钟/天 |
推荐内容点击率(CTR) | 11% | 29% |
| 新用户留存率(7日) | 63% | 89% |
5. 总结与展望
核心优势总结
| 场景 | ES核心竞争力 |
|---|---|
| 日志分析 | 实时索引 + 水平扩展 + 低成本存储 |
| 实时搜索 | 倒排索引 + 分布式架构 + 智能分词 |
| 推荐系统 | 向量检索 + 复杂评分 + 实时更新 |
未来演进方向
Serverless架构:按需自动扩缩容,进一步降低成本- AI增强:整合LLM实现自然语言查询(如"找出上周销量最高的商品")
- 硬件协同:利用
GPU加速向量检索(性能提升10倍+)
相关文章:
【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.1.2典型应用场景:日志分析、实时搜索、推荐系统
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 为什么选择Elasticsearch?——典型应用场景深度解析1. 引言2. 日志分析:海量数据的实时洞察2.1 行业痛点2.2 ES解决方案关键技术实现: 2.…...
Spring Cloud Alibaba学习 3- Sentinel入门使用
Spring Cloud Alibaba学习 3- Sentinel入门使用 中文文档参考:Sentinel中文文档 一. SpringCloud整合Sentinel 1.1 下载Sentinel-Dashboard Sentinel下载地址:Sentinel-Dashboard 到下载目录,cmd输入 java -jar sentinel-dashboard-1.8…...
使用DeepSeek/chatgpt等AI工具辅助网络协议流量数据包分析
随着deepseek,chatgpt等大模型的能力越来越强大,本文将介绍一下deepseek等LLM在分数流量数据包这方面的能力。为需要借助LLM等大模型辅助分析流量数据包的同学提供参考,也了解一下目前是否有必要继续学习wireshark工具以及复杂的协议知识。 pcap格式 目…...
C语言 --- 经典习题1
C语言 --- 经典习题1 第 一 题 - - - 交 换 两 个 整 数 的 值(四 种 方 法)第 二 题 - - - 最 大 公 约 数 和 最 小 公 倍 数 之 和总结 💻作者简介:曾 与 你 一 样 迷 茫,现 以 经 验 助 你 入 门 C 语 言 …...
自定义mybatis拦截器,在springboot项目中不起作用的解决方法
自定义mybatis拦截器,在springboot项目中不起作用的解决方法 自定义mybatis拦截器,在若依springboot项目中不起作用的原因 找到 MyBatisConfig 配置类,引入自定义配置 在sqlSessionFactory中添加自定义拦截器,就可以正常使用了…...
记一次pytorch训练loss异常的问题
记一次pytorch训练loss异常的问题 问题描述 使用mmdetection框架训练时,某项loss出现异常大的值,比如1781232349724294.000。这个问题只在多卡训练时才会出现。 解决方法 在确认target和predction没有问题后,发现是在dataset中的数据处理…...
vue2使用d3.js实现网络拓扑图
vue2使用d3.js实现网络拓扑图 支持节点更换图标, 线条改变颜色 安装 npm i d37.9.0 --save自定义组件 <template><div style"width: 100%; height: 100%"><div ref"networkChart" class"network-chart"></div><e…...
记录一下在k3s快速创建gitlab
废话不多说,直接上配置文件 需要修改的地方(备注都有写): 1.命名空间 namespace 2. claimName 文件挂载 Deployment kind: Deployment apiVersion: apps/v1 metadata:name: gitlabnamespace: cicd # 替换为您的命名空间la…...
AWQ和GPTQ量化的区别
一、前言 本地化部署deepseek时发现,如果是量化版的deepseek,会节约很多的内容,然后一般有两种量化技术,那么这两种量化技术有什么区别呢? 二、量化技术对比 在模型量化领域,AWQ 和 GPTQ 是两种不同的量…...
线性模型 - 支持向量机
支持向量机(SVM)是一种用于分类(和回归)的监督学习算法,其主要目标是找到一个最佳决策超平面,将数据点分为不同的类别,并且使得分类边界与最近的数据点之间的间隔(margin)…...
AI大模型-提示工程学习笔记20-多模态思维链提示
目录 1. 多模态思维链提示的核心思想 (1) 单模态 CoT 的局限性 (2) Multimodal CoT 的解决方案 2. Multimodal CoT 的工作流程 (1) 多模态输入 (2) 特征提取 (3) 多模态融合 (4) 思维链生成 (5) 答案生成 3. Multimodal CoT 的关键组件 (1) 大语言模型 (LLM) (2) 多…...
nginx 搭建 IPv6 -> IPv4 反向代理服务器
背景 在实际生产过程中,由于各种原因,我们的在线服务搭建在火山云服务器上,使用火山云包括 ECS、CLB、PLB 等组件进行网络通信,并且通过专线接受来自某公司内部流量。但是在大概 22~23 年,某公司要把所有网络流量变为…...
湖北中医药大学谱度众合(武汉)生命科技有限公司研究生工作站揭牌
2025年2月11日,湖北中医药大学&谱度众合(武汉)生命科技有限公司研究生工作站揭牌仪式在武汉生物技术研究院一楼101会议室举行,湖北中医药大学研究生院院长刘娅教授、基础医学院院长孔明望教授、基础医学院赵敏教授、基础医学院…...
面试基础---深入解析 AQS
深入解析 AQS:从源码到实践,剖析 ReentrantLock 和 Semaphore 的实现 引言 在 Java 并发编程中,AbstractQueuedSynchronizer(AQS)是一个核心框架,它为构建锁和其他同步器提供了基础支持。ReentrantLock 和…...
go 语言中的线程池
使用 goroutine 和 channel Go 语言中并没有直接类似 Java 线程池的内建概念,但它提供了类似的功能,主要通过goroutine和channel来实现并发处理。你可以通过结合这两者来实现一个“线程池”的功能。 在 Go 中,goroutine是轻量级的线程&…...
从 0 到 1,用 Python 构建超实用 Web 实时聊天应用
从 0 到 1,用 Python 构建超实用 Web 实时聊天应用 本文深入剖析如何运用 Python 的 Flask 框架与 SocketIO 扩展,搭建一个功能完备的 Web 实时聊天应用。从环境搭建、前后端代码实现,到最终运行展示,逐步拆解关键步骤࿰…...
AF3 DataPipeline类process_multiseq_fasta 方法解读
AlphaFold3 data_pipeline 模块DataPipeline类的 process_multiseq_fasta 方法用于处理多序列 FASTA 文件,生成 AlphaFold3 结构预测所需的特征,适用于多链复合物的预测。它结合了 Minkyung Baek 在 Twitter 上提出的“AlphaFold-Gap”策略,即通过在多链 MSA 中插入固定长度…...
Vue2+Element实现Excel文件上传下载预览【超详细图解】
目录 一、需求背景 二、落地实现 1.文件上传 图片示例 HTML代码 业务代码 2.文件下载 图片示例 方式一:代码 方式二:代码 3.文件预览 图片示例 方式一:代码 方式二:代码 一、需求背景 在一个愉快的年后ÿ…...
[记录贴] 火绒奇怪的进程保护
最近一次更新火绒6.0到最新版,发现processhacker的结束进程功能无法杀掉火绒的进程,弹窗提示如下: 可能是打开进程时做了权限过滤,火绒注册了两个回调函数如下: 但奇怪的是,在另外一台机器上面更新到最新版…...
【蓝桥杯】每天一题,理解逻辑(1/90)【Leetcode 移动零】
文章目录 题目解析讲解算法原理【双指针算法思路】(数组下标充当指针)如何划分和执行过程大致 代码详情 题目解析 题目链接:https://leetcode.cn/problems/move-zeroes/description/ 题目意思解析 把所有的零移动到数组的末尾保持非零元素的相对顺序 理解了这两层…...
vue js-web-screen-shot浏览器截取其他非全屏窗口界面
网页截屏 js-web-screen-shot 截取其他窗口 显示不全问题 npm 安装 js-web-screen-shot npm install js-web-screen-shot --savejs-web-screen-shot默认截屏是从左下角开始的,修改成左上角开始,然后编辑cropBoxInfo参数宽高进行截取,目前截…...
pycharm远程连接服务器运行pytorch
Linux部署pytorch 背景介绍 不同的开源代码可能需要不同的实验环境和版本,这时候的确体现出Anaconda管理环境的好处了,分别搞一个独立环境方便管理。 有的教程建议选择较旧的版本,但笔者建议在条件允许的情况下安装最新版,本次…...
服务器虚拟化是一种将物理服务器资源(如CPU、内存、存储、网络等)通过软件技术抽象、分割和整合,创建多个独立、隔离的虚拟服务器(虚拟机,VM)的技术。
服务器虚拟化是一种将物理服务器资源(如CPU、内存、存储、网络等)通过软件技术抽象、分割和整合,创建多个独立、隔离的虚拟服务器(虚拟机,VM)的技术。每个虚拟机可以运行不同的操作系统和应用程序,如同独立的物理服务器一样工作。 核心思想 资源池化:将物理服务器的硬…...
java练习(41)
ps:题目来自力扣 最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 import java.util.Arrays;class Solut…...
关于CanvasRenderer.SyncTransform触发调用的机制
1)关于CanvasRenderer.SyncTransform触发调用的机制 2)小游戏Spine裁剪掉帧问题 3)Dedicated Server性能问题 4).mp4视频放入RT进行渲染的性能分析闭坑指南 这是第421篇UWA技术知识分享的推送,精选了UWA社区的热门话题…...
【计算机网络】OSI模型、TCP/IP模型、路由器、集线器、交换机
一、计算机网络分层结构 计算机网络分层结构 指将计算机网络的功能划分为多个层次,每个层次都有其特定的功能和协议,并且层次之间通过接口进行通信。 分层设计的优势: 模块化:各层独立发展(如IPv4→IPv6,…...
PDF扫描档智能方向识别:多模型投票机制的实践测试 救活古典书籍
2025-02-22 20:10物联全栈123 尊敬的诸位!我是一名物联网工程师。关注我,持续分享最新物联网与AI资讯和开发实战。期望与您携手探寻物联网与 AI 的无尽可能 RAG知识库搭建的过程中,扫描档pdf的支持和准确率一直是个大家都不愿主动提起的事情…...
java23种设计模式-桥接模式
桥接模式(Bridge Pattern)学习笔记 🌟 定义 桥接模式属于结构型设计模式,将抽象部分与实现部分分离,使它们可以独立变化。通过组合代替继承的方式,解决多维度的扩展问题,防止类爆炸。 &#x…...
【11】RUST使用cargo组织crate
文章目录 使用cargo组织crate重导出编译文档生成测试 cargo组织工作空间 TODOcrate.io账号 TODO暂时不看发布crate 使用cargo组织crate 重导出 在模块顶部使用pub use self::重导出,方便使用模块时候直接使用use mod_X::xxx。从而隐藏crate内部模块的结构。方便向…...
springboot 引入前端
前端 打包 npm run build vue.config.js 文件 publicPath 默认建议保持 / publicPath: ‘/’ 后端 目录 粘贴下面目录之一: src/main/resources/static/ src/main/resources/public/ 补充(用的少) server:servlet:context-path: /thirdAdm…...
