初识ElasticSearch
一、ElasticSearch是什么?
ElasticSearch
是分布式搜索和分析引擎。
它具有分析日志的功能,通常与Logstach和Kibana联合使用。
ElasticSearch将多台机器中出现的日志信息进行了集中分析,分析后对数据进行了展示,在Kibana中可以直接看到日志情况,再接入一些实时计算模块,可以做实时报警功能。
ElasticSearch核心功能是反向索引功能,根据其反向所以可以查询到关键的日志信息。
Logstach 是什么?
Logstach 具有搜集数据的功能,是日志收集系统。
Kibana 是什么?
Kibana是数据可视化平台,可以用图表的方式来展示数据。
二、关键概念的引入
1、什么是搜索?
(1)常见的网页中都会有一个搜索框,可以用来搜索内容,这些搜索我们通常都能够根据关键字进行相关查询,比如搜索游戏,会出现‘手机游戏’、‘PC游戏’、‘主机游戏’等等。
(2)系统中的文件搜索,在windows操作系统中查询文件。
这些例子都属于搜索,搜索就是通过一些关键字,查询出来根这些关键字相关的信息。
2、全文检索
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
全文检索的方法主要分为按字检索和按词检索。
按字检索是指对于文章中的每一个关键字都建立索引,检索时将词分解为字的组合。
按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同意项等。英文等西方文字由于按照空白切分词,因此实现上于按字处理类似,添加同义处理也更容易。中文等东方文字则需切分字词,以达到按词索引的目的。
3、倒排索引
按照数据库中学到的内容,我们为每个表的id都建立索引,按照最理想的情况我们根据id来对值进行查找。
而倒排索引是根据内容查找id,再根据id查询真正的内容。
再倒排索引中,我们采用全文检索中的字或词作为关键字,为其绑定和该关键词有关的信息或内容。
例如倒排索引的表为:
关键字 | ID |
---|---|
游戏 | 1、2、3、4 |
手机 | 2 |
switch | 1 |
PS4 | 3 |
PC | 4 |
MySQL等数据库信息。
ID | Message |
---|---|
1 | switch游戏 |
2 | 手机游戏 |
3 | PS4游戏 |
4 | PC游戏 |
通过上述两个表,我们看出,倒排索引就是将关键字作为关键字索引信息,查询到具有该信息的ID值,再根据该ID值查询出具体的内容。
4、Lucene
Lucene是一个jar包,包含各种建立倒排索引的方法。
ElasticSearch能够请搜访问建立在Lucene上的全套搜索能力。
ElasticSearch是分布式的,在Lucene的非分布式的基础上可以检索到更多的信息,同时也由于其是分布式的,可以将数据在多台服务器上进行备份,提高了数据的安全性。
三、ElasticSearch的优点
1、分布式的功能
2、数据高可用性
3、API更简单
4、支持多种语言
5、支持PB级的数据
6、完成搜索的功能和分析功能
7、基于Luncene,隐藏了Luncene的复杂性
四、搜索引擎原理
1、搜索引擎的原理就是建立倒排索引。
2、采用倒排索引,将文章中内容的关键字建立索引。
3、在Luncene的基础上进行了封装,实现了分布式搜索引擎。
4、ElasticSearch中的索引、类型和文档概念类似于Mysql中的数据库、表和行。
5、ElasticSearch采用Master-slave架构,实现了数据库的分片和备份。
总结
总结一下,ES是一个基于倒排索引的分布式的分析工具,即提供了分布式的副本提高了安全性,又高性能的分析了关键词内容。是用来分析的必备。