Elasticsearch简介
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
官网传送门:https://www.elastic.co/products/elasticsearch
总结起来,Elasticsearch就是:一个采用Restful API标准的高扩展性和高可用性的实时数据分析的全文搜索工具。
Elasticsearch的特点
- 分布式索引、搜索。
- 索引自动分片、负载均衡。
- 自动发现机器、组建集群。
- 支持Restful 风格接口。
- 配置简单等。
Elasticsearch中设计的概念和名词解释
- Node(节点):单个的装有Elasticsearch服务并且提供故障转移和扩展的服务器。
- Cluster(集群):一个集群就是由一个或多个node组织在一起,共同工作,共同分享整个数据具有负载均衡功能的集群。
- Document(文档):一个文档是一个可被索引的基础信息单元。
- Index(索引):索引就是一个拥有几分相似特征的文档的集合。
- Type(类型):一个索引中,你可以定义一种或多种类型。
- Field(列):Field是Elasticsearch的最小单元,相当于数据的某一列。
- Shards(分片):Elasticsearch将索引分成若干份,每个部分就是一个shared。
- Replicas(副本): Replicas是索引一份或多份拷贝。
关系型数据库和非关系型数据库的对比
关系型数据库(如MySQL) | 非关系型数据库(Elasticsearch) |
---|---|
数据库Database | 索引Index |
表Table | 类型Type |
数据行Row | 文档Document |
数据列Column | 字段Field |
Elasticsearch架构
gateway概念
代表 elasticsearch 索引的持久化存储方式,elasticsearch 默认是先把索引存放到内存中去,当内存满了的时候再持久化到硬盘里。当这个 elasticsearch 集群关闭或者再次重新启动时就会从 gateway 中读取索引数据。
elasticsearch 支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop 的 HDFS 和 amazon 的 s3 云存储服务。
river概念
Elasticsearch river 代表的是一个数据源,这也是其它存储方式(比如:数据库)同步数据到 elasticsearch 的一个方法。它是以插件方式存在的一个 elasticsearch 服务,通过读取 river 中的数据并把它索引到 elasticsearch 当中去,官方的 river 有 couchDB、RabbitMQ、Twitter、Wikipedia。
discovery.zen概念
代表 elasticsearch 的自动节点发现机制,而且 elasticsearch还是一个基于 p2p 的系统。首先它它会通过以广播的方式去寻找存在的节点,然后再通过多播协议来进行节点之间的通信,于此同时也支持点对点的交互操作。
Transport概念
Transport代表 elasticsearch内部的节点或者集群与客户端之间的交互方式。默认的内部是使用 tcp 协议来进行交互的,同时它支持 http协议(json格式)、thrift、servlet、memcached、zeroMQ等多种的传输协议(通过插件方式集成)。
Elasticsearch使用状况以及与其他搜索引擎的对比
详见文章:http://blog.csdn.net/u013142781/article/details/51224988
Solr和Elasticsearch的区别
- 二者安装都很简单;
- Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
- Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
- Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
- Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。