网站列表页框架布局原则,物流公司在哪做网站,温州网站建设培训学校,网站设计制作一条龙免费Elasticsearch 的分布式架构原理#xff1a;通俗易懂版
Lucene 和 Elasticsearch 的前世今生
Lucene 是一个功能强大的搜索库#xff0c;提供了高效的全文检索能力。然而#xff0c;直接基于 Lucene 开发非常复杂#xff0c;即使是简单的功能也需要编写大量的 Java 代码通俗易懂版
Lucene 和 Elasticsearch 的前世今生
Lucene 是一个功能强大的搜索库提供了高效的全文检索能力。然而直接基于 Lucene 开发非常复杂即使是简单的功能也需要编写大量的 Java 代码并且需要深入理解其底层原理。
Elasticsearch简称 ES构建在 Lucene 之上隐藏了 Lucene 的复杂性提供了简单易用的 RESTful API 和 Java API同时支持多种语言的 API 访问使得搜索引擎的开发变得更加容易。
Elasticsearch 是什么
Elasticsearch 主要有以下特点
分布式文档存储引擎分布式搜索引擎和分析引擎分布式架构支持 PB 级数据
ES 的核心概念
近实时Near RealtimeNRT
Elasticsearch 是一个近实时NRT的搜索引擎意味着
从写入数据到数据可以被搜索到会有一个小延迟通常 1 秒左右。通过 ES 进行搜索和分析可以在秒级时间内返回结果。
集群Cluster
一个 Elasticsearch 集群由多个节点组成每个节点所属的集群由配置决定。对于中小型应用来说刚开始一个集群通常只有一个节点。
节点Node
节点是 ES 集群中的一个实例每个节点都有一个唯一的名称。默认情况下节点会自动加入名为 elasticsearch 的集群。只要启动多个 ES 实例它们就会自动组成一个集群。
文档Document和字段Field
**文档Document**是 ES 中最小的数据单元类似于数据库中的一行记录。**字段Field**是文档中的数据字段类似于数据库中的列。ES 以 JSON 格式存储文档。
示例
{product_id: 1,product_name: iPhone X,product_desc: 苹果手机,category_id: 2,category_name: 电子产品
}索引Index
索引Index是一组具有相似结构的文档集合类似于数据库中的 表Table。例如一个 product_index 可能存储所有商品的相关信息。
⚠ 过时概念Type
在 Elasticsearch 7.x 及以上版本中type 概念已被移除所有索引只能有一个 type。
以前type 用于对一个索引内的数据进行分类比如
product_index 下可以有 electronics 和 clothing 两个 type分别存储电子产品和服装产品的数据。但在 ES 7.x 及以上版本中这种分类方式已不再支持建议使用不同的索引来存储不同类别的数据。
分片Shard
单台服务器无法存储海量数据ES 通过 分片Shard 机制将索引拆分成多个部分并分布在多台服务器上。优点 扩展能力可以存储更多数据。提高查询性能查询时多个分片可以并行执行提高吞吐量。
注意
每个分片Shard本质上是一个独立的 Lucene 索引。在创建索引时需要指定分片数量后续不能更改。
副本Replica
副本Replica 用于提高数据的可用性和查询性能。副本的作用 高可用性如果主分片Primary Shard所在节点宕机副本Replica Shard可以接管防止数据丢失。负载均衡多个副本可以分担查询压力提高查询速度。
默认配置
Primary Shard主分片默认 5 个创建索引时确定无法修改。Replica Shard副本分片默认 1 个可以随时调整。最小的高可用配置需要至少 2 台服务器确保每个副本分布在不同的节点上。
示意图
索引 - 分片Shards- 主分片Primary Shard 副本分片Replica ShardES vs 传统数据库对比
Elasticsearch关系型数据库Index索引数据库DatabaseDocument文档行RowField字段列Column
总结
Elasticsearch 通过 分片Sharding副本Replication 机制实现了 分布式存储 和 高可用性同时提供了 近实时搜索 的能力使得它成为大数据搜索和分析的主流选择。
在现代互联网公司Elasticsearch 主要用于 日志分析、全文搜索、业务分析、推荐系统 等场景。如果你在面试中遇到 ES 相关问题理解这些基本概念可以帮助你更好地应对面试挑战。