Loading

Elasticsearch

什么是Elasticsearch

Elasticsearch 是一个基于 Apache Lucene 的分布式搜索和分析引擎。它提供了一个功能强大、实时的数据存储、检索和分析的平台,尤其适合处理结构化和非结构化数据。它在大数据处理、全文搜索、实时日志分析、监控等场景下应用广泛。

核心概念

  1. 索引(Index):相当于关系型数据库中的数据库。它是数据存储的地方,包含多个文档。
  2. 文档(Document):相当于关系型数据库中的行,是最小的数据单元,以 JSON 格式存储。
  3. 类型(Type):在 Elasticsearch 7.x 版本中已经被废弃,之前用于区分同一个索引中的不同文档类型。
  4. 分片(Shard)和副本(Replica):为了实现数据的分布式存储和高可用性,Elasticsearch 把索引分成多个分片(Shard),并且可以为每个分片创建副本(Replica)。

优点

  • 全文检索:基于倒排索引的数据结构,可以快速地搜索文本数据。
  • 分布式架构:数据自动分片,可以水平扩展,适用于大数据处理。
  • 高可用性:通过副本机制保证数据的冗余存储,提高容灾能力。
  • RESTful API:使用 JSON 格式的数据进行交互,易于与各种编程语言集成。

常见应用场景

  • 日志分析:与 Logstash 和 Kibana(一起称为 ELK Stack)搭配使用,实现实时日志收集、分析和可视化。
  • 全文搜索引擎:例如电子商务网站的商品搜索,社交平台的内容搜索。
  • 数据监控:可以用来监控服务器性能数据、应用程序日志等。

什么是倒排索引

1.先把文档内容进行分词,形成词条与文档ID的对应关系,叫做词条库,词条具备唯一性,建立索引。

2.对搜索内容进行分词,把分词后得到一个关键词列表,根据关键词去词条库种匹配,在找到对应的文档ID列表。

3.然后根据文档ID列表,找到对应的文档信息。

ES相关概念对比MySQL

MySQL Elasticsearch 说明
Table(表) Index(索引) 索引(Index)是文档的集合,类似于 MySQL 中的表(Table)。每个索引用于存储一组相似的数据类型。
Row(行) Document(文档) 文档(Document)就是 Elasticsearch 中的数据单元,类似于 MySQL 中的行(Row),文档使用 JSON 格式存储。
Column(列) Field(字段) 字段(Field)是文档中的一个属性,类似于 MySQL 表中的列(Column)。每个字段都有类型和数据。
Schema(模式) Mapping(映射) Mapping(映射)定义了索引中文档的结构和字段类型,类似于 MySQL 中表的结构(Schema)。
SQL(结构化查询语言) DSL(查询 DSL) DSL 是 Elasticsearch 提供的 JSON 格式的查询语言,用于进行数据的增删改查(CRUD)操作,功能类似于 MySQL 中的 SQL。
posted @ 2024-10-15 20:23  LL。。。  阅读(25)  评论(0)    收藏  举报