ElasticSearch 详解

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: ElasticSearch 是一款优秀的开源搜索引擎,适用于大数据场景下的高效检索与分析。其分布式架构、实时搜索和灵活的数据分析功能使其能处理 PB 级数据量。相比 Solr,ES 在实时性、分布式架构和文档处理上更具优势。核心概念包括索引、文档、分片和副本等。ES 使用倒排索引实现快速搜索,区别于正向索引。与关系型数据库相比,ES 更适合非结构化数据和全文搜索。总结来说,ES 在电商搜索、日志分析等领域有广泛应用,未来有望带来更多创新。


一、为什么要学习 ElasticSearch

在大数据场景下,传统的关系型数据库在处理海量数据检索时,往往面临性能瓶颈。而 ElasticSearch 以其分布式、高可用、实时搜索等特性脱颖而出。

  1. 海量数据处理能力:能够轻松应对 PB 级别的数据量,通过分布式架构将数据分散存储在多个节点上,提升数据处理和检索效率。
  2. 实时搜索:对于实时性要求高的应用场景,如电商的商品搜索、社交平台的实时消息搜索等,ElasticSearch 能够近乎实时地将新数据索引并提供搜索服务。
  3. 灵活的数据分析:支持复杂的数据分析功能,如聚合分析,可以对数据进行分组、统计等操作,为业务决策提供有力支持。

二、ES 和 Solr 对比

  1. 相似点
  • 都是基于 Lucene:两者底层都依赖 Lucene 库来实现索引和搜索功能。
  • 应用场景相似:都可用于文本搜索、信息检索等场景。
  1. 不同点
  • 实时性:ElasticSearch 在实时性方面表现更为出色,它的数据写入后几乎可以立即被搜索到。而 Solr 在数据写入后,需要一定时间进行索引提交等操作,才能被搜索到。
  • 分布式架构:ES 天生就是分布式架构,从设计之初就考虑了分布式环境下的各种问题,如节点自动发现、负载均衡等。Solr 虽然也能实现分布式,但在分布式的易用性和扩展性上不如 ES。
  • 文档处理:ES 对文档的处理更加灵活,支持动态添加字段等操作。Solr 在这方面相对较为严格,需要预先定义好 Schema。

三、ElasticSearch 核心概念

  1. 索引(Index):可以理解为一个数据库,是具有相似特征的文档集合。例如,一个电商平台可以将商品数据索引、用户数据索引等分开存储。
  2. 类型(Type):在一个索引中,可以定义不同的类型来区分不同的数据结构。不过在 ElasticSearch 7.x 版本后,逐渐弱化了类型的概念。
  3. 文档(Document):是 ElasticSearch 中最小的数据单元,类似于关系型数据库中的一行记录。每个文档都有一个唯一的 ID,可以通过 ID 来进行文档的增删改查操作。
  4. 分片(Shard):为了处理海量数据,ES 将索引切分为多个分片,每个分片可以分布在不同的节点上。这样不仅提高了数据的存储能力,还能并行处理搜索请求,提升搜索性能。
  5. 副本(Replica):为了提高系统的可用性和容错性,ES 会为每个分片创建多个副本。当某个分片所在的节点出现故障时,副本可以替代其继续提供服务。

四、正向索引

正向索引是从文档到关键词的映射关系。例如,在一个文档集合中,每个文档都有唯一的标识,正向索引记录了每个文档包含哪些关键词。以一篇文章为例,正向索引会记录文章 ID 以及文章中出现的所有单词。当我们需要获取某个文档的内容时,可以通过正向索引快速定位。然而,在搜索场景下,正向索引存在局限性。如果我们要查找包含某个关键词的所有文档,就需要遍历所有文档,这种方式效率较低。

五、倒排索引

倒排索引是从关键词到文档的映射关系。它以关键词为索引项,记录每个关键词出现在哪些文档中,以及在文档中的位置等信息。例如,对于关键词 “苹果”,倒排索引会记录包含 “苹果” 这个词的所有文档 ID,以及 “苹果” 在每个文档中的具体位置。在搜索时,通过倒排索引可以快速定位到包含目标关键词的文档,大大提高了搜索效率。这也是 ElasticSearch 等搜索引擎能够实现快速搜索的关键技术之一。

六、正向索引与倒排索引的区别

  1. 数据结构:正向索引以文档为中心,记录文档包含的关键词;倒排索引以关键词为中心,记录关键词出现的文档。
  2. 搜索效率:正向索引在按文档 ID 查找文档内容时效率较高,但在按关键词搜索文档时效率较低;倒排索引则相反,在按关键词搜索时效率极高,能够快速定位到相关文档。
  3. 应用场景:正向索引适用于对单个文档进行内容检索的场景,如文档管理系统中根据文档 ID 获取文档内容。倒排索引则广泛应用于搜索引擎等需要根据关键词进行快速检索的场景。

七、ES 与关系型数据库对比与区别

  1. 数据模型
  • 关系型数据库:采用结构化的数据模型,数据以表格形式存储,表与表之间通过外键等方式建立关联关系。
  • ElasticSearch:采用非结构化的数据模型,以 JSON 格式的文档存储数据,文档之间没有严格的关联关系,更适合处理半结构化和非结构化数据。
  1. 查询语言
  • 关系型数据库:使用 SQL 语言进行查询,语法严谨,适用于复杂的关联查询、聚合查询等。
  • ElasticSearch:使用 DSL(Domain - Specific Language)进行查询,更专注于全文搜索、模糊搜索等功能,语法相对灵活。
  1. 事务处理
  • 关系型数据库:支持强事务处理,能够保证数据的一致性和完整性,适用于对数据准确性要求极高的场景,如银行转账等业务。
  • ElasticSearch:虽然也提供一定的一致性保证,但在事务处理能力上不如关系型数据库,更适合对数据一致性要求相对较低,对查询性能和扩展性要求较高的场景。

八、总结

ElasticSearch 作为一款优秀的开源搜索引擎,在海量数据的检索和分析方面具有独特的优势。通过深入了解其核心概念、与其他技术的对比以及底层的索引原理,我们能够更好地在实际项目中运用它。无论是在电商搜索、日志分析还是数据分析等领域,ElasticSearch 都能发挥重要作用。当然,在选择使用 ElasticSearch 时,也需要根据具体的业务需求和数据特点,权衡其与关系型数据库等其他技术的优缺点,以构建出最适合的解决方案。在未来的数据处理和搜索领域,ElasticSearch 有望继续发展,为我们带来更多的惊喜和便利。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
10月前
|
搜索推荐 API 定位技术
一文看懂Elasticsearch的技术架构:高效、精准的搜索神器
Elasticsearch 是一个基于 Lucene 的开源搜索引擎,以其强大的全文本搜索功能和快速的倒排索引技术著称。它不仅支持数字、文本、地理位置等多类型数据,还提供了可调相关度分数、高级查询 DSL 等功能。Elasticsearch 的核心技术流程包括数据导入、解析、索引化、查询处理、得分计算及结果返回,确保高效处理大规模数据并提供准确的搜索结果。通过 RESTful API、Logstash 和 Filebeat 等工具,Elasticsearch 可以从多种数据源中导入和解析数据,支持复杂的查询需求。
558 0
|
9月前
|
人工智能 算法 API
构建基于 Elasticsearch 的企业级 AI 搜索应用
本文介绍了基于Elasticsearch构建企业级AI搜索应用的方案,重点讲解了RAG(检索增强生成)架构的实现。通过阿里云上的Elasticsearch AI搜索平台,简化了知识库文档抽取、文本切片等复杂流程,并结合稠密和稀疏向量的混合搜索技术,提升了召回和排序的准确性。此外,还探讨了Elastic的向量数据库优化措施及推理API的应用,展示了如何在云端高效实现精准的搜索与推理服务。未来将拓展至多模态数据和知识图谱,进一步提升RAG效果。
340 1
|
9月前
|
机器学习/深度学习 传感器 编解码
全球降水测量 全球降水测量(GPM)07 版
全球降水测量(GPM)07版是由NASA和JAXA合作的国际卫星任务,提供每三小时一次的全球雨雪观测数据。该数据集使用IMERG算法整合多颗卫星的微波和红外数据,提供高精度的降水量估算。GPM 07版涵盖2000年6月至2025年1月的数据,适用于气象预报、洪水预警等领域。数据以二进制格式提供,分辨率约为11公里,时间分辨率为半小时。NASA免费提供这些数据供公众使用。
375 22
|
10月前
|
NoSQL 应用服务中间件 API
Redis是如何建立连接和处理命令的
本文主要讲述 Redis 是如何监听客户端发出的set、get等命令的。
1551 160
|
7月前
|
存储 消息中间件 Kafka
官宣 | Fluss 0.6 发布公告
Fluss社区宣布0.6.0版本正式发布,历经3个多月开发,45位贡献者完成200+代码提交。新版本亮点包括:列压缩技术降低6倍存储空间、MergeEngine支持灵活主键合并策略、Prefix Lookup实现Delta Join功能。这些特性增强了Fluss的功能和性能,标志着其在构建下一代分析型流存储系统上的重要进展。
289 1
官宣 | Fluss 0.6 发布公告
|
9月前
|
存储 监控 算法
Flink 四大基石之 Checkpoint 使用详解
Flink 的 Checkpoint 机制通过定期插入 Barrier 将数据流切分并进行快照,确保故障时能从最近的 Checkpoint 恢复,保障数据一致性。Checkpoint 分为精确一次和至少一次两种语义,前者确保每个数据仅处理一次,后者允许重复处理但不会丢失数据。此外,Flink 提供多种重启策略,如固定延迟、失败率和无重启策略,以应对不同场景。SavePoint 是手动触发的 Checkpoint,用于作业升级和迁移。Checkpoint 执行流程包括 Barrier 注入、算子状态快照、Barrier 对齐和完成 Checkpoint。
1701 20
|
10月前
|
存储 SQL 缓存
Flink 2.0 存算分离状态存储 — ForSt DB 
本文整理自阿里云技术专家兰兆千在Flink Forward Asia 2024上的分享,主要介绍Flink 2.0的存算分离架构、全新状态存储内核ForSt DB及工作进展与未来展望。Flink 2.0通过存算分离解决了本地磁盘瓶颈、检查点资源尖峰和作业恢复速度慢等问题,提升了云原生部署能力。ForSt DB作为嵌入式Key-value存储内核,支持远端读写、批量并发优化和快速检查点等功能。性能测试表明,ForSt在异步访问和本地缓存支持下表现卓越。未来,Flink将继续完善SQL Operator的异步优化,并引入更多流特性支持。
1015 88
Flink 2.0 存算分离状态存储 — ForSt DB 
|
9月前
|
存储 监控 druid
Druid、ClickHouse、Doris、StarRocks 的区别与分析
本文对比了 Druid、ClickHouse、Doris 和 StarRocks 四款大数据分析引擎。它们均为 OLAP 引擎,采用列式存储和分布式架构,适用于海量数据分析。Druid 擅长实时分析与高并发查询;ClickHouse 以超高性能著称,适合复杂查询;Doris 提供易用的 SQL 接口,性能均衡;StarRocks 则以其极速查询和实时更新能力脱颖而出。各引擎在数据模型、查询性能、数据更新和存储方面存在差异,适用于不同的业务场景。选择时需根据具体需求综合考虑。
4106 20
|
11月前
|
机器学习/深度学习 算法 数据挖掘
介绍一下如何处理数据不平衡的问题
介绍一下如何处理数据不平衡的问题
701 1
|
9月前
|
弹性计算 运维 自然语言处理
产品测评 | 感受操作系统智能助手OS Copilot新功能带来的运维效率飞升
近期,我再次评测了阿里云OS Copilot的新版本,发现其在命令执行、任务自动化、文件处理及知识问答等方面表现出色,特别是-t参数显著提升了70%的效率。使用过程中,我发现它不仅简化了复杂任务的处理,还提供了中文解释配置文件的功能,极大地方便了初学者。总结来看,OS Copilot极大地提升了Linux运维效率,但仍需在自然语言理解、用户界面优化和错误处理机制等方面进一步改进。未来若能支持更多操作系统并集成更多实用工具,必将成为Linux用户的得力助手。