Bootstrap

Elasticsearch简介及架构介绍

一、Elasticsearch简介

官网:https://www.elastic.co/cn/products/elasticsearch

Elasticsearch是一个采用Restful API标准的高扩展性高可用性实时数据分析的全文搜索工具。

二、Elasticsearch的优势

2.1 弹性、高可用

2.2 可预见,可信

2.3 简单透明

三、elasticsearch与关系型数据库的对比

关系型数据库(MySQL)

非关系型数据库

数据库database

索引 index

表 table

类型 type

数据行 row

文档 document

数据列 column

字段 field

小结:

1、elasticsearch其实就是非关系型数据库,非关系型数据库是相对关系型数据库而言的。

2、非关系型数据库存储的是非结构化的数据,非结构化数据包括文本、图片、音频。

3、结构化的数据就是数字符号,数字符号得用关系型数据库去存储,也就是我们常用的mysql、oracle、db2。

四、elasticsearch模块结构

 

 

 

1、第一层:Gateway层:elasticsearch支持的索引数据存储格式。Elasticsearch关闭再启动时或从gateway里面读取数据。

2、第二层:Distributed lucene directory层:elasticsearch是基于lucenu框架开发的。

3、第三层:elasticsearch对数据的加工处理方式,mapping:定义索引下面type字段的处理规则,比如:索引如何建立、数据类型等等,相当于关系型数据里面的schema。River是一个运行在elasticsearch集群内部的一个插件,主要是用来从外部获取异构数据,然后在elasticsearch里创建索引,常见的插件有rabbitmq、twitter river。

4、第四层:是elasticsearch自动发现节点的机制。Zen是用来实现节点自动发现,还有master节点选取用的,假如maste出现了故障,不能工作了,那么其它节点会自动选举,然后产生一个新的master。Elasticsearch是基于P2P的系统,它首先头通过广播机制寻找存在的节点,然后再通过多播协议来进行节点间的通信,同时也支持点对点交互。

5、第五层:是elasticsearch的脚本执行功能,有了这个功能很方便的对查询出来的数据进行加工处理,脚本类型:mvel、js、python等。

6、第六层:3rd plugins:意思是elasticsearch支持安装很多第三方插件。

7、第七层:是elasticsearch的交互方式,支持三种协议:thrift、memcached、http,其中elasticsearch是默认用http协议传输的。

8、Restful Style API:是elasticsearch的API支持模式,现在这个RESTFUL这样的API接口的标准是非常流行的

9、java(Netty):elasticsearch采用了java语言,同时java语言也是对elasticsearch支持度最好的语言,因为这个lucene是基于java开发的。
 

五、elasticsearch与solr的区别

1.elasticsearch更侧重于实时的数据分析,solr在实时搜索方面的效率是不如elasticsearch的。

2.在支持文本格式方面,solr比elasticsearch强。Solr支持的文本格式有:html,pd,word,excel,cvs,而elasticsearch只支持json这种格式。

小结:大家选择工具的同时,要根据自己项目的情况去选择,这样才有利于项目的开展。

六、Restful简介

 

RESTFul:Representational State Transfer,中文意思:表现层状态转化。变现层指的是资源的表现层,这里的资源是指网络上的信息,比如一张图片,一段文本,一步电影,那么每个资源在网络上都有一个标识,可以理解为一个ID,每个资源都有一个ID去表示它,这个ID就称之为URL。当我们给了这个资源一个地址后,比如我们经常说的URL,我们就能访问这个资源。
 

 

 

表现层状态转化:

 

我们平时访问一个网站,其实就是客户端和服务端的一种互动过程,有了互动,这个数据的状态肯定会发生改变。Elasticsearch默认走的是http协议,而http协议它是一种无状态的协议,无状态就是指服务端它不会记录客户端的所有信息和操作,客户端必须每次带上自己的状态去请求服务器。因此,如果客户端想要操作这个服务器,必须通过某些手段,才能让服务器发生状态转化。而这种转化是建立在表现层之上的,所以说这就表现层的状态转化。
 

 

 

转化手段:

1. GET:用来获取资源

2. POST:用来创建资源(也可以用来更新资源)

3. PUT:用来更新资源

4. DELETE:用来删除资源

API:Application Progranming Interface,中文意思是应用程序接口,作用是让应用程序的使用人员无需访问源码或者了解内部的工作机制,就能通过这个接口去访问或修改这个应用程序的数据,它的出现是为了让应用程序更加方便的去调用和扩展。

小结:了解一个应用程序是如何使用的,首先得去看它的API,有了API,程序员或运维人员就能方便的通过命令或程序去调用和使用它。
 

 

七、JSON和XML的对比区别

XML:Extensive Markup Language,中文意思是可扩展标记语言,是一种程序与程序之间传输数据的标记语言。

JSON:JavaScript Object Notation,中文意思是基于JavaScript上语言的轻量级的数据交换格式。

 

XML淘汰的原因

1. XML文件格式比较庞大比较复杂,传输占用带宽。

2. 服务端和客户端都需要话费大量的代码去解析XML,解析XML会花费资源和时间。

3. 不同浏览器之间解析XML的方式不一致,需要重复并写很多代码,代码多不容易维护。

 

JSON流行的原因

1. 数据格式比较简单,易于阅读,易于读写。

2. 格式是压缩的,占用带宽小。

3. 易于解析。

4. 支持很多语言,包括C,C++,JAVA,Perl,PHP,Python(当前流行语言都支持)。

5. JSON数据能直接为服务端的代码(程序)使用,能简化服务端及客户端的代码开发量。

八、CURL命令的详解

命令网址:http://man.linuxde.net/curl

1、就是以通过命令的方式执行http协议的请求的工具。

2、可以通过curl操作http的GET/POST/PUT/DELETE方法。

 

CURL相关操作

访问一个网页:curl www.baidu.com

显示http response的头信息:curl -iwww.baidu.com

只显示请求头信息:curl -I www.baidu.com

显示一次http请求的通信过程:curl -vwww.baidu.com 或 curl --trace a.txtwww.baidu.com

CURL执行GET/POST/PUT/DELETE操作:curl -X GET/POST/PUT/DELETE www.baidu.com

 

;