elasticsearch是构建在Apache Lucene上的使用Java语言开发的开源分布式搜素引擎。Lucene是一个开源的全文搜索引擎工具包,它仅是一个工具包而不是一个完整的工作引擎,并且只能被Java应用程序调用,elasticsearch基于REST API,因此任何开发语言开发的任何应用程序都可以通过JSON格式的HTTP请求来管理elasticsearch集群。elasticsearch封装并扩展了Luncene,使存储、索引、搜索都变得更快、更容易。除此之外,elasticsearch还可以完好地存储数据,甚至可以将其直接作为带搜索功能的NoSQL数据库来使用,它的数据是通过文档形式表示的。
官网地址:github
官网介绍:
canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
与mysql对比
Elasticsearch | MySQL | 说明 |
---|---|---|
index | Table | Elasticsearch中的index就是mysql中的表,表示文档的集合 |
Document | Row | Elasticsearch中文档类似Mysql中的行,为json数据 |
Field | Column | 类似Mysql数据库中的字段 |
Mapping | Schema | Elasticsearch中的Mapping是索引中的约束,定义字段类型,分词规则等等 |
DSL | SQL | elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch |
- Mysql: 事务性操作,可以确保数据的安全性与一致性
- Elasticsearch:更加擅长搜索类的需求
在一般使用时往往是MySQL + Elasticsearch结合使用,Mysql主要用于安全性,并发性要求较高的场景。Elasticsearch主要用于查询性能要求较高的硬性。