Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎,它允许用户近乎实时地存储、搜索和分析大量数据。
下表是Elasticsearch相关概念对比MySQL
| MySQL | Elasticsearch | 说明 |
|---|---|---|
| Table | Index | 索引(Index)是文档的逻辑集合,类似于MySQL中的表(Table)。在Elasticsearch中,索引可以包含多个类型,但这些类型已经被弃用。索引通常用来组织和搜索相关的数据。 |
| Row | Document | 文档(Document)是存储在Elasticsearch中的单个记录,类似于MySQL中的一行(Row)。每个文档都是JSON格式的对象,可以包含多个字段。文档具有唯一的ID,可以通过这个ID来访问。 |
| Column | Field | 字段(Field)是文档中的一个属性或键值对,类似于MySQL中的一列(Column)。字段可以有不同的数据类型,如文本、数字、日期等。 |
| Schema | Mapping | 映射(Mapping)定义了索引中文档的结构,包括字段名称及其数据类型,以及如何将这些字段映射到Lucene索引中。它类似于MySQL中的表结构(Schema),但在Elasticsearch中提供了更灵活的数据建模能力。映射还可以指定分析器(Analyzer)、是否分词等。 |
| SQL | DSL | Elasticsearch查询DSL(Domain Specific Language)是一种基于JSON的查询语言,用于执行复杂的全文搜索、过滤和聚合操作。它与SQL类似,都是用来查询和处理数据的语言,但DSL更适合于全文搜索场景。 |
- Mysql:擅长事务类型操作,可以确保数据的安全和一致性,对安全性要求较高的写操作,使用mysql实现
- Elasticsearch:擅长海量数据的搜索、分析、计算,对查询性能要求较高的搜索需求,使用elasticsearch实现