1、功能概念 、系统原理 、系统的使用概念解释第一章系统原理第二章安装部署第三章功能展示第四章插件说明第五章CONTENT目录概念解释1ElastichSearch(ES) 以及组成 第一章 概念解释 1.1l ElasticSearch 是分布式实时搜索、实时分析,实时存储引擎,简称(Es), 成立于2012年,是一家来自荷兰的、开源的大数据搜索、分析服务提供商,为企业提供实时搜索、数据分析服务,支持PB级的大数据。 - 公司网站: https:/www.elastic.co l 基于Apache Lucene 开源搜索引擎,Lucene是目前公认的性能最好,最先进的,功能最全的搜索引擎。l E
2、lasticsearch使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,通过简单RESTfulAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。 超出你的想像,从10亿的数据查出一条只需要1-2秒内。l 实时分析 ,实时搜索 ,可分布,可扩展到上百台PB机器。l 著名的gitHub网站 用es来搜索 20TB的数据。包括13亿文件与1300亿行的代码。第一章 概念解释 1.2l 集群:多台Es服务器的结合的统称叫ES集群,一个集群包含多台服务器,多个节点。l 节点:一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能。l 索
3、引: 一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。l 类型: 在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。第一章 概念解释 1.3l 文档: 一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSON(Javascript Obj
4、ect Notation)格式来表示。文档必须被索引/赋予一个索引的type。 索引 ( index ) 类型( type ) 文档( doc )1 N1 N第一章 概念解释 1.4l 分片: 一个索引保存了大量的文档数据,那这些数据是如何存储的呢?其实这是把很多数据,分布的放在每个分片中,分片又被放到集群中的各个机器上。每个分片都独立的“索引”(即可以增加、删除,修改、查询)。这样做的好处有点两点。 1、横向扩展,水平分割数据容量。 2、可以在分片上并行的进行操作。 主分片 复制分片1 N第一章 概念解释 1.5l 复制分片: 一个分片可以有多个复制分片,也可以无复制分片。它的作用主要是防止
5、分片故障,加速查询索引等功能,提供了高可用性。另外,复制分片是不和主分片在一起的,意思就是说,一个主分片在一台机器上,它的复制分片可能分布在其它N台机器上。在这里,我们可以把它理解为,一个分片的复制,就叫复制分片。每个分片会包含部分索引文件。文件由sgment组成 。分片( primary_shards)复制分片 ( primary_shards)复制分片 ( primary_shards)分析 搜索 存储分布实时分析Es可以根据业务要求 ,发挥分布式的优点,尽最大性能实时分析、解析出业务需要的数据文档。分布集群实时存储Elastic 某个主结点保存数据时候,只有当复制分片保存成功,才能认为是
6、实时保存成功。并可以并发支持批量数据保存。文档以分片的形式,保存在不同的机器上。快速搜索Elastic并发从N台机器中的复制节点或主节点取出数据,通过查询负载机来进行组合数据,最终响应请求。10亿的数据,可以最快1-2秒内搜索出结果根据业务需求及当前的搜索量,Elastic可以横向扩展,支持最大PB级的分布数据,可以提高索引的搜索速度。第一章 概念解释 1.6第一章 概念解释 1.6系统原理2ElastichSearch(ES) 查询为什么能实时? 第二章 系统原理 2.1集群中有很多结点,结点与结点之间可以进行配置。比如:Node1主结点,非数据结点。(协调创建索引、查询请求)Node2非主
7、结点,数据结点。Node3非主结点,非数据(负载 均衡,组装返回的数据给客户端。)第二章 系统原理 2.2l 搜索: 一当一个客户端请求查询某条数据时,通常用如下几个步骤完成搜索。1)客户端给NODE1发请求,查询名字叫张三的数据。2)P1节点接收到请求,判断出当前数据_ID对应的分片0,且分片P1中的数据对应的复制分片R0,R1f都有,会将请求转发到R0处理。3)取出文档数据返回给P1,最终返回给客户端。注意,这里的请求,其实会并发查询所有复制分片 中的名字叫张三的数据。所以这里会非常快的返回数据。第二章 系统原理 2.3l 更新: 一当一个客户端请求更新某条数据时,通常用如下几个步骤完成更
8、新。1) 客户端给Node1发送更新请求。2)它转发请求到主分片所在节点Node3。3)Node3从主分片检索出文档,修改_source字段的JSON,然后在主分片上重建索引。如果有其他进程修改了文档,它以retry_on_conflict设置的次数重复步骤3,都未成功则放弃。4) 如果Node3成功更新文档,它同时转发文档的新版本到Node1和Node2上的复制节点以重建索引。当所有复制节点报告成功,Node3返回成功给请求节点,然后返回给客户端。第二章 系统原理 2.4l 创建: 一当一个客户端请求创建或更新某条数据时,通常用如下几个步骤完成创建、删除索引 。1) 客户端给P1发送创建、删
9、除请求。2)根据 文档ID,将它转发请求到主分片所在节点Node3。3)Node3在主分片上执行请求,如果成功,它将会转发请求到NODE1和NODE2的复制分片上,当所有复制分片成功,则NODE3返回成功信息给请求结点。在将信息返回给客户端。第二章 系统原理 倒排索引 2.5l 倒排索引 : Elasticsearch使用一种叫做倒排索引(inverted index)的结构来做快速的全文搜索。倒排索引由在文档中出现的唯一的单词列表,以及对于每个单词在文档中的位置组成。 例如:“金服集团大数据中心应用开发部”,会被拆成很中文分词在索引表中。TermsDOC1DOC2金服集团X大数据开发部应用X
10、第二章 系统原理 倒排索引 2.6l 当我们查询“金服大数据”这一个中文分词时,只需要知道他在哪个文档即可。TermsDOC1DOC2DOC3金服XX大数据XXSCORE(相关度)121l 两个文档都匹配,但是DOC2比其它的有更多的匹配项。相关度评分为【2】,如果我们加入简单的相似度算法(similarityAndlgorithm),计算匹配单词的数目,这样我们就可以说DOC2这个 文档比其它的匹配度更高,这对于我们的查询结果具有更多相关性。也可按照此排序 。安装部署3ElastichSearch(ES) 如何在部署在Linux上从https:/www.elastic.co 上下载最新的安装
11、包。一、下载解压文件到D盘下,运行/bin中的elasticsearch.sh或cmd文件。在这之前 需要配置elasticsearch.yml文件。二、安装如比较有名的head,kopf,ik分词等,插件可以预览、监控、告警现有部署的节点数据。可以直观看到集群状态。三、插件配置JVM,结点配置、每台机的性能的优化,以及mapping的预配置。四、配置及优化第三章 安装部署 3.1 安装 第三章 安装部署 3.1 安装 l 下载与解压: https:/artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.tar.gz
12、tar -zxvf elasticsearch-5.1.1.tar.gz(注意不要使用root解压,root是无法启动es的)。 目前采用5.0.1版本进行演示。 JDK版本JDK1.8 环境虚拟机ubuntu15.01第三章 安装部署 3.2 安装演示 第三章 安装部署 3.2功能展示Demo4ElastichSearch(ES) 查询、搜索?第四章 功能展示 4.1l 官方JavaApi 是官方提供的针对java客户端进行的搜索api,包含丰富的接口类型,比如常用的match查询,match_all查询,scroll分页查询,querystring查询等。可以很方便的进行操作es数据管理。
13、l 官方Java Rest Client 基于tcp/ip协议来发送数据到集群,比较方便直观的一种方式。l 官方JavaScript方式 可用javascript来进行调用、查询的一种方式。l 其它 Python/.Net/Perl/php/ruby 官方其它的方式调用。l 实时分析 ,实时搜索 ,可分布,可扩展到上百台PB机器。l 第三方Jest 很方便调用官方Javaapi的工具类。插件说明5ElastichSearch(ES) 插件如何使用第五章 插件说明 5.1l Head 是第三方提供的一款很优秀的插件,集监控、查询、配置一体的web功能系统,可以在系统中进行创建、删除索引 、文档。
14、以及查询、配置索引等功能,深受广大开发者的喜爱 。l Kopf 是另一个第三方提供的一款很优秀的插件,在head功能的基础上,又增加了很多优秀的功能,基本上可以完成所有功能,比如settings的配置、mapping的新增 、修改。性能调优,以及功能上的改进,提供了很方便的查询界面供用户查询数据。很方便直观。l IK分词 是国内著名的IK中文分词。在elasticsearch中,当有字段是text或是string时,elasticsearch会其进行倒排索引 ,会进行数据分词,比如“中华人民共和国”会分成“中华”、“人民”、“共和国”等。当数据 进行查询“人民”时,会进行倒排索引,从而完成对中文的分词操作。第五章 插件说明 Head第五章 插件说明 Head第五章 插件说明 Kopf第五章 插件说明 Kopf第五章 插件说明 Kopf第五章 插件说明 5.2l Es-hadoop插件 elasticsearch-hadoop是一个深度集成Hadoop和ElasticSearch的项目,也是ES官方来维护的一个子项目,通过实现Hadoop和ES之间的输入输出,可以在Hadoop里面对ES集群的数据进行读取和写入,充分发挥Map-Reduce并行处理的优势,为Hadoop数据带来实时搜索的可能。 谢谢THE PROFESSIONAL POWERPOINT TEMPLATE