一.elasticserch概念与特点(有弹性的可伸缩的搜索)
百度百科,,官网www.elastic.co
特点: 1.distributed(分布式的),scalable(可扩展的,新的节点不用复杂配置),and highly available(高可用)
2.real-time(实时的,) search and analytics capabilities 实时搜索分析能力
3.sophisticated(复杂的) restful api
apache 2 open source license
总结:一个采用restful api 标准的高扩展性和高可用性的实时数据分析的全文搜索工具。
高扩展性:体现在elasticserch添加节点非常简单,基本新的节点无需做复杂的配置,接入elasticsearch的集群就可以了,自动就会被发现
高可用性:因为elasticserch是分布式的 ,每一个节点都有这个备份,所以down一两个节点是不会有问题的
实时:实时搜索,同时支持pb级的大数据的搜索能力,从索引一个文档到这个文档能够被搜索到只有轻微的延迟,通常是一秒
elasticserch概念:
node(节点),,单个装有elasticsearch服务并且提供故障转移和扩展的服务器
cluster(集群),,一个集群就是有一个获多个node组织在一起,共同工作,共同分享整个数据具有负载均衡功能的集群。注:elasticsearch各个节点都是对等的关系,可以去中心话,master节点只不过是多了一个维护集群状态的功能 ,每个节点上面的状态和数据都是实时同步的。如果master出现故障,其他node就能顶上去成为新的master.
document(文档),,一个文档是一个可被索引的基础信息单元。
index(索引),,索引就是一个拥有几分相似特性的文档的集合。
type(类型),,一个索引中,你可以定义一种获多种类型。
field(列),,field是elasticsearch的最小单位,相当于数据的某一列。
shards(分片),,elasticsearch将索引分成若干份,每个部分就是一个shard,水平分割和拓展数据的容量,提高了io性能的吞吐量.(一个索引的大小可能会超过单个节点的大小,且数据量大单个节点处理的搜索请求的响应肯定会很慢。)shard在索引创建的时候就可以定义,默认5份,索引创建完后就改不了了。
replicas(复制),,replicas是索引一份或多分拷贝。(为了防止数据丢失和做负载均衡)
elasticsearch可以将其看作一个数据库,对比如下图:
elasticsearch是非关系型数据库,非关系型数据库是相对于关系型数据库而言的,它存储的是非结构化的数据,非结构化的数据就是我们平常接触倒的文本,图像,音频等。结构化的数据就是数字符号,结构化的数据得用关系型数据库去存储。
elasticsearch结构:
gateway:是elasticsearch支持的索引数据的存储格式,当elasticsearch关闭再启动的时候,它就会从gateway里面读取索引数据
distributed lucene directory:lucene框架,elasticsearch就是基于lucene这个框架而写的。
index Module(index模块)、search Module(搜索模块)、mapping、river为elasticsearch对数据的加工处理方式。
mapping:定义索引下面type字段的处理规则,比如索引如何建立,还有索数据类型等等。相当于关系型数据中的schema.
river为运行在elasticsearch集群内部的插件。主要是用来从外部获取异构数据。然后在elasticsearch里面创建索引。常见的 插件有RabbitMQ River还有Twitter River。
Discovery是elasticsearch自动发现节点和master节点选举的机制。(elasticsearch是基于p2p的系统,它首先通过广播的机制寻找存在的节点,然后再通过这个多播协议来进行节点间的通信。同时也支持点对点的交互。)
scripting:elasticsearch的脚本执行功能,能很方便的对查询出来的数据进行加工处理。
3rd plugins:elasticsearch支持安装很多第三方的插件。因为elasticsearch社区的支持力度是比较大的,会有很多中插件提供给用户使用。如中文分词,状态监控插件。
transport:elasticsearch交互方式,默认elasticsearch使用http协议传输。
JMX:
RESTful style API:elasticsearch的API支持模式。(restful这样的api接口是非常流行的。)
JAVA(NETTY):