什么是Elasticsearch
Elasticsearch概念以及特点
Elasticsearch百度词条:Elasticsearch
官网: Elasticsearch: RESTful, Distributed Search & Analytics | Elastic
Elasticsearch是一个采用RESTful API标准的高扩展性和高可用性的实时数据分析的全文搜索工具
高扩展性:体现在Elasticsearch添加节点非常简单,基本新的节点无需做复杂的配置,接入Elasticsearch的集群就可以了,自动会被发现。
高可用性:Elasticsearch是分布式的,每个节点都有备份,所以down一两个节点是不会出现任何问题的
实时(real time):Elasticsearch是实时搜索平台,同时他支持PB级的这种大数据的搜索能力。从索引一个文档到这个文档被搜索到,只有一个轻微的延迟(是多久),通常是1秒。所以说实时性非常高。
Elasticsearch相关概念:
Node(节点):单个的装有Elasticsearch服务并且提供故障转移和扩展的服务器。
Cluster(集群):一个集群就是由一个或多个node组织在一起,共同工作,共同分享整个数据,具有负载均衡功能的集群,集群中各个节点都是对等的关系,这样做的优点是去中心化,这样的话,master节点只不过是多了一个维护集群状态的功能,每个节点上面的状态和数据都是实时同步的,如果master节点出现了故障,其他另外一台node就能马上顶替作为master节点。
document(文档):一个文档是一个可被索引的基础信息单元。比如说你有份数据,有一份客户信息的数据,包括客户的名称,和客户的行业,客户的地址等等。
index(索引):索引就是一个拥有几分相似特征的文档的集合。
Type(类型):一索引中,你可以定义一种或多种类型。
field(列):Field是Elasticsearch的最小单位,相当于数据的某一列,一个文档中,有多个field
shard(分片):Elasticsearch讲索引分成若干份,每个部分就是一个shard。一个索引的大小可能会超出单个节点硬盘限制的大小,其次,如果1TB大小的索引放在一个节点上,单个节点处理搜索的请求响应会比较慢。为了解决这样的问题,Elasticsearch采用了分片的解决方案,能够达到水平分割和扩展你的数据容量,同时也提高了I/O性能的吞吐量。
也是Elasticsearch分布式特点的一个体现。
shard在索引创建的时候就可以指定,默认值是5份。但是索引创建完之后,这个值就没法更改了。
分片的实现(1) 分片的实现(2)Replicas(复制):Replicas是索引一份或多份拷贝。为了防止数据的丢失,为了做负载均衡,所以就采用replicas。也是Elasticsearch高可用的一个体现。
关系型数据库和非关系型数据库的比较
非关系型数据库是相对于关系型数据库而言的,它存储的是非结构化的数据,非结构化的数据就是平常我们接触到的文本、图片、音频。
结构化数据就是数字符号,用关系型数据库去存储,也就是我们常用的mysql,oracle,db2
Elasticsearch架构
Elasticsearch架构图:
架构图gateway:是Elasticsearch支持的索引数据的存储格式,当Elasticsearch关闭再启动的时候,他就会从这个gateway里面读取索引数据支持的格式:Local FileSystem、Shared FileSystem、Hadoop HDFS、Amazon S3。
Distributed Lucene Directory:Lucene框架
Index Module、Search Module、Mapping、River:Elasticsearch对数据的加工处理的方式
Mapping 定义索引下面type字段的处理规则,比如说:索引如何建立,还有索引数据类型等等,相当于关系型数据库里的schema
River是一个运行在Elasticsearch集群内部的一个插件,主要是用来从外部获取异构数据,然后在Elasticsearch里创建索引。常见的插件有RabbitMQ River还有Twitter River
Discovery:Zen、EC2
Zen用来实现节点自动发现,还有Master节点选取用,假如master出现了故障,不能工作了,那么其他的节点会自动选举,然后产生一个新的master
Elasticsearch基于p2p的系统。他首先通过广播的机制寻找存在的节点,然后再通过这个多播协议来进行节点间的通信,同时也支持这个点对点的这个交互
Scripting:Elasticsearch的脚本执行功能,方便对查询出来的数据进行加工处理,脚本类型有mvel、js、python、等等
3rd Plugins:Elasticsearch支持安装很多第三方的插件,比如中文分词插件,插件安装很简单,只需要一条命令
Transport:Elasticsearch交互方式,Thrift/Memcached/http。默认的Elasticsearch是用HTTP协议传输的
RESTful Style API:Elasticsearch的API支持的模式。
Java(Netty):采用JAVA语言
Elasticsearch使用状况以及与其它搜索引擎的对比
Elasticsearch与solr的共同点和区别
Es更侧重于实时的数据分析,solr在实时搜索方面它的效率,不如Elasticsearch的。
在支持文本格式方面,solr比Elasticsearch强。solr支持的文本格式有很多,比如html,pdf,word,excel,cvs。Elasticsearch只支持JSON格式