前言
ElasticSearch 是一个高可用开源全文检索和分析组件。提供存储服务,搜索服务,大数据准实时分析等。一般用于提供一些提供复杂搜索的应用。
ElasticSearch 提供了一套基于restful风格的全文检索服务组件。前身是compass,直到2010被一家公司接管进行维护,开始商业化,并提供了ElasticSearch 一些相关的产品,包括大家比较熟悉的 kibana、logstash 以及 ElasticSearch 的一些组件,比如 安全组件shield 。当前最新的EElasticSearch 版本为 6.2.4 ,比较应用广泛的为2.X,直到 2017-05推出了6.x 版本 ,将版本号调为 6.X 。这是为了和 kibana 和 logstash 等产品版本号进行统一 ElasticSearch 。
准实时:ElasticSearch 是一个准实时的搜索工具,在一般情况下延时少于一秒。
ElasticSearch的基本概念
1、集群:一个或者多个节点组织在一起
2、节点:一个节点是集群中的一个服务器,由一个名字来标识,默认是一个随机的漫微角色的名字。分为如下两种:
a:单节点的ES,安装启动后,会默认创建一个名为elasticsearch的es集群。如果在局域网中存在该clustr.name,会自动加入该集群。形成一个ElasticSearch 集群 。
b:多节点ES,在同一个局域网内的ES服务,只需要配置为同一个clust.name 名称即可成为
一个ES集群。集群能够将同一个索引的分片,自动分布到各个节点。并在高效的提供查询服务的同时,自动协调每个节点的下线以及上线情况。
3、分片:将索引(相当于数据库)划分为多份的能力,允许水平分割和扩展,对个分片响应请求,提供性能和吞吐量
4、副本:创建分片的一份或者多份的能力(相当于备份),在一个节点失败其余节点可以顶上
ElasticSearch的数据存储概念
1、index(索引,类似于mysql中的database。索引只是一个逻辑上的空间,物理上是分为多个文件来管理的;命名:全部小写)
2、type(类型,类似于mysql中的table,根据用户需求每个index中可以新建任意数量的type)
3、documents(文档,对应mysql中的行。有点类似于MongoDB中的文档结构,每个Document是一个json格式的文本)
4、fields(可以理解为数据库表的列)
5、Mapping(更像是一个用来定义每个字段类型的语义规范在mysql中类似sql语句,在ES中经过包装后,都被封装为友好的Restful风格的接口进行操作)
ElasticSearch不是一个中间库,是一个集合了数据保存数据分析的搜索引擎服务器。
HTTP标准请求方法
1、get 请求指定的页面信息,并返回实体主体
2、Post 向指定资源提交数据进行处理请求,数据被包含在请求体重。Post请求可能会导致新的资源的建立和/或已有资源的修改
3、Put向服务器传送的数据取代指定的文档的内容。
4、Delete 请求服务器删除中的页面
5、还有Options trace connect head请求
6、提供了一套关于索引以及状态查看的restful风格API。至于什么是Restful风格服务,如下
倒排索引
一般底层的存储,都是使用倒排索引
倒排索引源于实际应用中需要根据属性的值来查找记录,这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址,由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而被称为倒排索引(inverted index)。带有倒排索引的文件我们成为倒排索引文件,简称倒排文件(inverted file)