Elasticsearch相关技术点

目录

什么场景下使用了ES?//todo 项目中什么场景用了ES

ES 怎么用的?数据量级多少?为什么用ES 不用Hbase?

倒排索引 是什么讲一下?

为什么ES检索比较快?

ES 数据结构是怎么样的?

ES查询流程?

ES如果要查10条数据需要从各个分片上各取多少条数据?

ElasticSearch性能优化详解

1. 硬件优化

2. JVM 配置优化

3. 索引优化

4. 查询优化

5. 集群优化

6. 写入优化

7. 缓存优化

8. 监控与调优

9. 其他优化

总结

ElasticSearch知识体系详解 | Java 全栈知识体系

快手 Java 面试 | 小林coding

ES详解 - 优化:ElasticSearch性能优化详解 | Java 全栈知识体系


什么场景下使用了ES?//todo 项目中什么场景用了ES

使用场景 应用示例 具体作用
网站搜索 电商平台(如淘宝、京东)、新闻门户、在线文档平台 根据用户输入关键词,快速匹配商品名称、描述、属性,新闻标题、内容等信息,提供准确搜索结果,提升用户体验
日志分析 大型互联网公司的服务器日志、各类应用程序日志 实时分析海量日志数据,定位问题、监控系统性能、发现潜在安全威胁,了解用户访问行为、流量分布等
数据分析 金融领域的交易数据分析、市场营销中的用户数据分析 对大规模数据进行快速统计分析,发现异常交易模式、进行风险评估,了解用户兴趣爱好、消费习惯,制定精准营销策略
知识图谱 智能客服系统 作为知识图谱的存储和查询引擎,建立实体之间索引关系,快速回答用户问题,提供准确信息和解决方案
监控和告警 IT 基础设施监控(服务器 CPU 使用率、内存占用、网络流量等数据监控) 存储和分析监控数据,当指标超出阈值时及时发出告警,帮助运维人员保障系统稳定运行
企业内部文档管理 企业内部合同、报告、手册等文档管理 对文档进行全文索引,方便员工快速搜索查找,支持权限管理,保障企业信息安全
地理位置搜索 地图应用(搜索附近餐厅、酒店、景点等) 支持地理位置数据类型和查询,根据用户位置信息,快速返回符合条件结果,并按距离排序
社交媒体分析 微博、微信等社交媒体平台的数据处理 分析用户情感倾向、话题热度、社交关系等,为企业和品牌提供市场洞察,助力品牌推广和用户管理

ES 怎么用的?数据量级多少?为什么用ES 不用Hbase?

//TODO 项目中什么场景用的ES,数据量多少,为什么不用Hbase?

对比项 Elasticsearch(ES) HBase
使用方法 1. 数据索引:以 JSON 格式组织数据,通过 RESTful API 或客户端库(如 Java、Python 客户端)进行索引
2. 数据搜索:利用查询 DSL 构建查询语句,通过 RESTful API 或客户端库执行查询获取结果
3. 集群管理:支持集群部署,通过管理 API 或工具监控集群状态、管理索引、分配资源等
4. 数据分析:提供聚合功能,对索引数据进行统计分析,如求和、平均值、计数、分组等
1. 数据存储:以分布式、面向列的方式存储数据,通过客户端 API 进行数据写入操作
2. 数据查询:使用扫描器(Scanner)或 Get 操作进行数据读取,支持基于行键的范围查询
3. 集群管理:通过 HBase 管理工具(如 HMaster)管理集群节点、表结构等
4. 数据维护:定期进行数据压缩、合并等操作,以优化存储和性能
适用数据量级 1. 中小规模:几十 GB 到数 TB 数据量可轻松应对,提供快速搜索和分析性能
2. 大规模:数 TB 到 PB 级别数据,合理配置集群和优化可处理,但需考虑硬件、索引、查询优化等
1. TB 级别:在日志存储等场景中,能高效存储和管理数 TB 规模数据,支持实时查询分析
2. PB 级别及以上:如科学研究领域的基因测序、天文观测等数据,通过扩展集群节点可处理 PB 级甚至更大规模数据
3. 高并发场景:在金融交易、物联网数据采集等超高并发读写场景下,能处理大量数据并支持每秒数千到数万次读写请求
选择 ES 而不选 HBase 的原因 1. 查询需求:擅长全文搜索、复杂查询和分析,基于 Lucene 倒排索引,搜索性能和灵活性强,HBase 对全文搜索支持弱
2. 数据结构:适合半结构化或非结构化数据,以 JSON 格式存储,灵活性高,HBase 更适合结构化数据,基于列族的数据模型
3. 实时性要求:数据写入后可立即搜索,实时性高,HBase 数据写入处理环节多,实时性相对差
4. 应用场景:常用于搜索引擎、日志分析、数据分析、监控告警等场景,HBase 主要用于大数据存储、实时数据处理、分布式数据库等场景
-

倒排索引 是什么讲一下?

ES 的倒排索引-优快云博客

  1. ES 基础概念与倒排索引
    • ES 概述:ES 是介于应用和数据之间的开源搜索引擎,通过关键词搜索数据,类似百度搜索。
    • 倒排索引原理:为解决海量数据关键词检索问题,对文本分词形成词项,记录词项与文本 id 关系,按字典序排序词项形成 Term Dictionary,其对应的文档 id 等信息集合为 Posting List,二者构成倒排索引。Posting List 还包含词频和词项偏移量等信息。
    • 相关优化组件:Term Dictionary 数据量大需存于磁盘,为加速搜索,提取部分词项前缀构建 Term Index(目录树结构)存于内存,通过它可快速定位 Term Dictionary 中词项位置。Stored Fields 用于存储完整文档内容,Doc Values 是为提升排序效率而构建的列式存储结构。这些结构共同组成具备完整搜索功能的最小单元 segment。
  2. 从 lucene 到 ES 的演进
    • lucene 架构与问题:lucene 是单机文本检索库,由多个 segment 构成。segment 生成后不可修改,新增文档生成新 segment,可通过段合并(segment merging)控制文件数量。但 lucene 存在性能、扩展性和可用性问题。
    • ES 的优化改进:通过数据分类写入不同 Index Name、对 Index Name 数据分片(shard)、分散部署分片到多个 Node、设置主分片和副本分片、分化 Node 角色(主节点、数据节点、协调节点)以及采用去中心化的方式同步数据,解决了 lucene 的问题,使 ES 具备高性能、高扩展性、高可用性,成为分布式搜索引擎。
  3. ES 与 Kafka 架构对比:ES 的 Index Name、Shard、Node 分别类似 Kafka 的 topic、Partition、broker,二者架构相似,可类比学习。
  4. ES 的工作流程
    • 写入流程:客户端请求发至协调节点,协调节点经 hash 路由找到主分片写入数据,主分片同步数据至副本分片,副本分片写入完成后主分片向协调节点发送 ACK,协调节点再响应客户端写入完成。
    • 搜索流程:查询阶段,客户端请求发至协调节点,协调节点将请求转发至数据节点分片,分片利用倒排索引和 doc values 获取并处理数据,协调节点聚合排序;获取阶段,协调节点根据文档 id 再次请求分片获取完整文档内容,最终返回给客户端 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值