核心知识篇(重点)

课程特点

(1)使用最新Elasticsearch 5.2版本讲解,深入浅出ES核心工作原理

(2)涵盖Elasticsearch所有核心知识点,系统化,体系完整详细,有一定深度,包括完整Java开发示范

(2-1)全面的知识体系,包括了工作原理,文档管理,索引管理,搜索,聚合分析,分词,数据建模,Java API等知识
(2-2)知识足够深入和细节,完全秒杀市面上已有的书籍和视频,比如index,segment, merge原理乐观锁并发控制索引别名零停机相关度评分算法与定制,近似聚合算法doc valuesfielddata机制原理父子关系数据建模,Java API执行scroll search等各种复杂操作,等等

(3)全程每讲必练,大量的案例实战和上机实验,实战出真知,实战中学知识,包含一个实战项目,运用学到的知识,开发一个小型门户网站的搜索引擎和数据分析系统,运用ES几乎所有的核心知识

(4)可以掌握es所有核心知识点,理解es核心原理,而且能够熟练动手操作所有学到的知识和功能,并且能够掌握ES集群的基本部署,并且基于Java开发一个适用于中小型企业的搜索引擎以及数据分析系统,达到学完即可上手到中小型项目中使用的程度

高手进阶篇(重点)

课程特点

(1)使用最新Elasticsearch 5.2版本讲解

(2)包含市面上几乎没有的所有Elasticsearch高级知识点:包含地理位置搜索聚合分析term vectorsuggester search搜索模板定制query执行剖析数十种最全面的聚合分析span queryshard分配定制es插件开发,等高级的知识点

(3)全程每讲必练,大量的案例实战和上机实验

(4)包含一个复杂实战项目,运用学到的知识,开发一个复杂的基于地理位置的智能餐厅app的搜索引擎和数据分析系统,运用ES从核心篇到高级篇的所有高阶知识点

(5)可以掌握es从核心到高阶的所有知识点,掌握完整的有深度的es知识体系,同时能够动手操作所有的知识点和功能,最后通过项目实战,能够在中小型公司中,基于Java开发一个可以基于地理位置进行搜索的高级搜索引擎,以及使用复杂聚合操作进行分析的高级实时数据分析系统

大型集群运维优化篇

课程特点

(1)最全面的Elasticsearch运维管理调优故障处理的知识体系:企业级监控体系的搭建,企业级集群部署,集群日常管理策略,集群版本升级方案,集群基准压测方案,集群数据的备份和恢复,系统核心配置参数,性能调优方案,故障处理方案

(2)全程每讲必练,大量上机实验,所有的运维、管理、部署、优化,全部上机实验

(3)从零开始,逐步搭建出一个大型可扩展、高性能、监控体系完善、管理体系健全的分布式集群

(4)可以开发复杂的es搜索/分析系统之外,还可以掌握在任何一个公司里,从零开始搭建一个分布式的大型es集群,并制定完善的监控,运维,管理,优化等方案

大型项目架构篇

课程特点

(1)涵盖Elasticsearch目前最核心的两个应用领域,垂直搜索引擎实时数据分析

(2)开发出2个企业级的大型复杂项目,是完全真实的大型企业项目,电商搜索引擎,电商实时数据分析平台

(2-1)大型电商搜索引擎,包括了真正复杂的大型企业,大型项目的商业级搜索引擎架构,包括了检索、数据更新、排序、分词、query分析等各个核心模块,同时架构上实现了复杂的缓存机制,热启动机制,防雪崩机制,自动降级高可用机制,等等

(2-2)大型电商实时数据分析平台,完整、复杂而且大型的电商数据分析,包括了完善的数据分析指标体系(运营指标,流量指标,销售转化指标,客户价值指标,商品指标,营销指标,风险控制指标,市场竞争指标),一站式构建出复杂的,企业级的,电商领域数据分析平台

(2-3)之所以要单独拉出一篇做大型项目实战,是因为,之前几篇讲的项目,多是架构较为简单,业务也不复杂的项目,主要适用于中小型公司,而且那两个项目主要是集中在运用ES的技术本身来开发出需要的功能来(搜索/分析)。这一篇讲解的项目,重点是采用大公司的大型复杂项目作为背景,让同学可以掌握基于ES技术的大型项目架构能力,达到架构师的水平。比如说大型电商搜索引擎,主要运用ES来实现,但是ES之外还有大型系统的复杂架构需要讲解。还有大型的电商实时数据分析平台,主要特点是业务繁琐而且复杂,需要基于ES构建出大型的数据分析平台架构。

(3)在之前课程中掌握了es的企业级集群运维管理,复杂搜索引擎和数据分析引用开发的技术基础之上,现在可以运用所学知识,结合电商的领域知识,开发出业务真实而且复杂的,大型的搜索、分析等电商系统以及相关架构,彻底掌握运用ES和ELK相关技术栈在中大型企业中,开发大型项目架构的经验和能力

ELK深入浅出篇

课程特点

(1)电商系统日志检索平台,采用ELK技术栈,会详细讲解logstashkibana两个技术,包括logstash的插件机制,监控方案,大规模扩展方案,升级方案,性能调优方案,kibana的可视化展现方案,同时讲解如何使用ELK技术栈开发出大规模日志存储与检索平台

(2)最后,需要真正深入重点讲解logstash和kibana两门技术,并结合ES技术,采用ELK技术栈,实现大型企业级的日志采集和检索平台。

(3)可以彻底精通ELK技术栈,并能够使用ELK技术栈快速搭建日志检索平台,以及数据可视化平台

Elasticsearch核心知识篇(2)

什么是搜索?

百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象) 百度 = 搜索,这是不对的

垂直搜索(站内搜索)

  • 互联网的搜索:电商网站招聘网站新闻网站各种app

  • IT系统的搜索:OA软件办公自动化软件会议管理日程管理项目管理员工管理

    • 搜索“张三”,“张三儿”,“张小三”;
    • 有个电商网站,卖家,后台管理系统,搜索“牙膏”,订单,“牙膏相关的订单”

搜索,就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键字,然后就期望找到这个关键字相关的有些信息


如果用数据库做搜索会怎么样?

做软件开发的话,或者对IT、计算机有一定的了解的话,都知道,数据都是存储在数据库里面的,比如说电商网站的商品信息,招聘网站的职位信息,新闻网站的新闻信息,等等吧。所以说,很自然的一点,如果说从技术的角度去考虑,如何实现如说,电商网站内部的搜索功能的话,就可以考虑,去使用数据库去进行搜索。

  • 如果用数据库做搜索会怎么样?

如果用数据库做搜索会怎么样.png

1、比方说,每条记录的指定字段的文本,可能会很长,比如说“商品描述”字段的长度,有长达数千个,甚至数万个字符,这个时候,每次都要对每条记录的所有文本进行扫描,懒判断说,你包不包含我指定的这个关键词(比如说“牙膏”)

2、还不能将搜索词拆分开来,尽可能去搜索更多的符合你的期望的结果,比如输入“生化机”,就搜索不出来“生化危机”

缺点使用简单的言语进行总结:

  1. 数据量较大,搜索性能不高
  2. 不能拆分词,进行匹配,搜索的准确性比较低

用数据库来实现搜索,是不太靠谱的。通常来说,性能会很差的。

什么是全文检索和Lucene?

(1)全文检索,倒排索引

什么是全文检索.png

理解:

  1. 倒排索引(通过输入词条进行分词,在词语后面关联词条,通过搜索词语,即可找到对应的词条)
  2. 数据库不太好用的原因:数据库词条100万,进行全表搜索,而且需要全面匹配(虽然有模糊匹配,耗费时间更长),微微不符合,就不能将数据提取出来,及其耗费时间
  3. 通过倒排索引,将100万词条进行分词,分开词的数量1000万,我们进行搜索,搜索到第一个满足条件的词,即可停止,找到词语关联的词条,当成结果进行返回,数据检索速度快,同时找到即可停止(早停),所以搜索整体的时间非常快

(2)lucene,就是一个jar包里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候,引入lucene jar,然后基于lucene的api进行去进行开发就可以了。用lucene,我们就可以去将已有的数据建立索引,lucene会在本地磁盘上面,给我们组织索引的数据结构。另外的话,我们也可以用lucene提供的一些功能和api来针对磁盘上的索引数据,进行搜索

什么是Elasticsearch?

(1)图解分析 什么是Elasticsearch.png

演化的过程:

  1. lucene其实就是已经能够完成所有的倒排索引和数据检索的过程,但是服务只是针对于单机的,我们可以进行扩展,到多机上,形成分布式的结构,但是彼此的机器之间无关联,我们还要写调度的程序去控制分布式的lucene的数据存储和数据检索,以及维护分词在分布式上的运用,还要保证数据的不丢失和高可用性,都是lucene亟待解决的问题

  2. Elasticsearch恰好解决上面的所有问题(简述,理解即可)

    • Elasticsearch中的各个shard 其实就是带有特殊功能的lucene,可以完成倒排索引,数据检索的基本功能
    • Elasticsearch还有主从结构primary-shard和replicated-shard:保证了数据不会丢失,同时负载均衡
    • Elasticsearch还是分布式的结构,解决了数据量大,机器的扩展的问题;同时解决了不同的lucene调度的问题
    • Elasticsearch封装了更多的高级功能,可支持更复杂的搜索,聚合分析等传统数据库的数据分析的功能