【Elasticsearch架构介绍及原理解析】讲解

Elasticsearch架构介绍及原理解析

  • [1. 前言](#1. 前言)
  • [2. Elasticsearch 基本概念](#2. Elasticsearch 基本概念)
  • [3. Elasticsearch 工作原理](#3. Elasticsearch 工作原理)

1. 前言

Elasticsearch 是一个基于 Apache Lucene 构建的分布式、RESTful风格的搜索和分析引擎,它允许你存储、搜索和分析大量数据迅速且实时,Elasticsearch 通常用于日志分析、全文搜索等复杂的数据分析场景,下面是一个对 Elasticsearch 架构及其工作原理的简要介绍。

2. Elasticsearch 基本概念

  • 节点(Node):一个 Elasticsearch 实例,它是集群中的一个服务器。
  • 集群(Cluster):由一个或多个节点组成的集合,它们共同工作,共享数据和负载任务。
  • 索引(Index):类似于传统数据库中的"数据库",是一堆具有类似特性的文档集合。
  • 类型(Type):已经在 Elasticsearch 7.x 版本中被废弃,过去类似于传统数据库中的"表"。
  • 文档(Document):一个可以被索引的信息单元,类似于传统数据库中的"记录",Elasticsearch 中的文档是 JSON 格式的。
  • 分片(Shard):索引可以分为多个分片,每个分片是一个自包含的索引,分片可以进一步冗余存储在不同节点上来提供容错。
  • 副本(Replica):一个分片的拷贝,副本在分散读取负载和增加容错方面起着重要作用。

3. Elasticsearch 工作原理

1. 分布式文档存储

当文档进入 Elasticsearch 时,文档会被存储在一个索引中,为了能够横向扩展和提供高可用性,每个索引都可以被切分成多个分片。每个分片可以有零个或多个副本。

2. 分布式搜索架构

当一个搜索请求被发送到集群时,Elasticsearch 首先会确定这个请求需要哪些索引分片参与,请求会被发送到这些分片所在的节点。每个节点执行本地搜索,并将结果发回请求的发起节点,由它来汇总这些结果,并返回给客户端。

3. 实时性

Elasticsearch 通过一种称为近实时(NRT)搜索的方式实现实时搜索,文档被索引后并不会马上可以被搜索,而是有一个稍微的延迟(默认是 1 秒)。

4. Lucene 索引

Elasticsearch 在底层使用 Lucene 索引。Lucene 提供了高性能的搜索功能,一个 Elasticsearch 分片其实是一个 Lucene 索引。

5. 分析链

Elasticsearch 通过分析器(Analyzers)处理文本数据,将其转换为一个 token 流,再进行索引和搜索,分析链包括字符过滤(Character Filter)、分词器(Tokenizer)、以及token过滤(Token Filter)。

6. 映射(Mapping)

Mapping 类似于数据库的 schema,是定义文档并告知 Elasticsearch 如何理解这些文档的方式,可以指定字段的数据类型,如整数、浮点数、字符串、布尔值等。

7. 查询 DSL

Elasticsearch 有一套灵活的查询DSL(Domain Specific Language)来构建复杂的搜索查询,这套查询语言基于 JSON,支持全文搜索、结构化查询、复合查询等。

8. 集群协调

Elasticsearch 集群内部有一个选主机制来处理元数据的管理,其中一个节点会被选举为 master 节点,负责管理集群的配置变更等。

9. 水平扩展

可以通过简单地添加更多节点来扩展集群规模,Elasticsearch 通过在后台进行数据和负载的自动分配来优化集群的性能和容量。

相关推荐
2401_891409261 小时前
商品与股指类ETF期权买卖五档Tick分钟级历史行情数据分析
大数据·#基准指标动态·#level2毫秒级tick流·#美股数据获取方案·#期货期权合约行情
武子康2 小时前
大数据-76 Kafka 从发送到消费:Kafka 消息丢失/重复问题深入剖析与最佳实践
大数据·后端·kafka
希望_睿智2 小时前
实战设计模式之解释器模式
c++·设计模式·架构
高阳言编程2 小时前
8. 数据流计算机和规约机
架构
piaoyunlive2 小时前
Base64 编码优化 Web 图片加载:异步响应式架构(Java 后端 + 前端全流程实现)
java·前端·架构
Xの哲學4 小时前
Linux PCI 子系统:工作原理与实现机制深度分析
linux·网络·算法·架构·边缘计算
qb6 小时前
vue3.5.18源码:computed 在发布订阅者模式中的双重角色
前端·vue.js·架构
PetterHillWater6 小时前
关于系统设计原则回顾
架构
树獭非懒7 小时前
Android 媒体篇|吃透 MediaSession 与 MediaController
android·架构
livemetee9 小时前
Flink2.0学习笔记:使用HikariCP 自定义sink实现数据库连接池化
大数据·数据库·笔记·学习·flink