1、什么是Elasticseach
Elasticseach是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。结合 kibana 、 Logstash 、 Beats ,也就是 elastic stack ( ELK )。被广泛应用在日志数据分析、实时监控等领域。
2、Elasticsearch生态
Elasticsearch 生态系统非常丰富,包含了一系列工具和功能,帮助用户处理、分析和可视化数据,Elastic Stack 是其核心组成部分。
Elastic Stack(也称为 ELK Stack)由以下几部分组成:
- Elasticsearch:核心搜索引擎,负责存储、索引和搜索数据。
- Kibana:可视化平台,用于查询、分析和展示 Elasticsearch 中的数据。
- Logstash:数据处理管道,负责数据收集、过滤、增强和传输到 Elasticsearch。
- Beats:轻量级的数据传输工具,收集和发送数据到 Logstash 或 Elasticsearch。
Kibana 是 Elastic Stack 的可视化组件,允许用户通过图表、地图和仪表盘来展示存储在 Elasticsearch 中的数据。它提供了简单的查询接口、数据分析和实时监控功能
2、Elasticsearch结构
Elasticsearch采用倒排索引,相比mysql的正向索引提高了查询效率。
倒排索引过程:
- 首先进行分词得到词条。
- 倒排根据词条列表查找id查询文档。
- 最后存放结果集。
正向和倒排索引的区别:
正向是根据文档找词条,倒排是根据词条找文档。
3、Elasticsearch核心概念
-
索引(Index):类似于数据库中的表。
-
文档(Document):索引中的每条记录,类似于数据库中的行数据。文档以JSON格式存储。
-
字段(Field):文档中的每个键值对,类似于数据库中的列
-
映射(Mapping):用于定义文档字段的数据类型以及其处理方式,类似于表结构。
-
集群(Cluster):多个节点组成的群集,用于存储数据并提供搜索功能。集群中的每个节点都可以处理数据。
-
分片(Shard):为了实现横向扩展,ES 将索引拆分成多个分片,每个分片可以分布在不同节点上。
-
副本(Replica):分片的复制品,用于提高可用性和容错性。
和数据库类比:
Elasticsearch 概念 关系型数据库类比 Index Table Document Row Field Column Mapping Schema Shard Partition Replica Backup
4、Elasticsearch 实现全文检索的原理
- 分词
- 倒排索引(根据分词去词表查询文档Id,然后再根据文档Id去查询文档)