Elasticsearch概念及特点
什么是Elasticsearch
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
总结来说,Elasticsearch是一个采用RESTful API 标准的高扩展性和高可用性的实时全文数据分析搜索工具。
Lucene是一个全文搜索的框架,它的作者是Hadoop的作者。
特点
- 分布式、可扩展、高可用性
- 实时搜索,实时分析
- 基于RESTful 标准
Elasticsearch涉及到的概念
- Node(节点):单个装有Elasticsearch服务并且提供故障转移和扩展的服务器。
- Cluster(集群):一个集群是由一个或多个node组织在一起的,共同分享整个数据并具有负载均衡功能,对外提供服务。
- Document(文档):一个文档是一个可被索引的基础信息单元。
- Index(索引):索引是一个拥有几分相似特征的文档的集合。每个index都有自己的mapping定义字段名和字段值
- Type(类型):一个索引中,可以定义一种或多种类型。
- Field(列):Filed是Elasticsearch中最小的单位,相当于数据的某一列。
- Shards(分片):Elasticsearch将索引分成若干份,每一部分都是一个shard。
- Replicas(复制):Replicas是索引一份或多分的拷贝。目的是保证高可用。
1、Elasticsearch节点都是对等关系,这样的优点就是去中心化。这样master节点只不过多了一个维护集群状态的功能。
2、Elasticsearch之所以要将Index分片,是因为可能存在Index的大小大于磁盘容量的情况。
Elasticsearch和传统的数据库对比
其实可以把 Elasticsearch 理解为是一种数据库,它和传统数据库比如 MySQL相比,对应关系如下:
关系型数据库mysql | 非关系型数据库Elasticsearch |
---|---|
数据库 Database | 索引 Index |
表 table | 类型 Type |
行 row | 文档 Document |
列 |