Elasticsearch是一种分布式的全文搜索引擎,简称“es”,是一种非常强大的信息检索(Information Retrieval,IR)应用,广泛应用于大数据分析,其产生的初衷是为了解决大数据下,传统的SQL查询检索速度慢的问题。作为一个搜索服务器,凡是与“检索”有关的应用,都有elasticsearch的身影。比如,github项目检索、百度搜索、淘宝电商等等。

搜索引擎起家的公司,其中有一位叫Doug Cutting的工程师,也迷上了搜索引擎。他做了一个用于文本搜索的函数库,命名为Lucene。Lucene是基于JAVA开发的,目标是为各种中小型应用软件提供全文检索功能。因为好用并且开源,非常受到程序员的欢迎。早期的时候,这个项目被发布在Doug Cutting的个人网站和SourceForge(一个开源软件网站)。后来,2001年底,Lucene成为Apache软件基金会jakarta项目的一个子项目。在2004年,Doug Cutting在Lucene的基础上,开发了一款开源的搜索引擎,命名为Nutch。Nutch是一个建立在Lucene核心之上的网页搜索应用程序,并在Lucene的基础上加了网页爬虫和一些网页相关的功能。但是随着时间的推移,无论是google搜索,还是Nutch,都面临搜索对象“体积”不断增大的问题。尤其是Google公司,作为互联网搜索引擎,需要存储大量的网页,并不断优化自己的搜索算法,提升搜索效率。因此,在2003年,Google发表了一篇技术学术论文,公开介绍了自己的谷歌文件系统GFS(Google File System),这是Google公司为了存储海量搜索数据而设计的专用文件系统。2004年,Doug Cutting基于Google的GFS论文,实现了分布式文件存储系统,并将其命名为NDFS(Nutch Distributed File System)。同年,Google又发表了一篇技术学术论文,介绍了自己的MapReduce编程模型,这个编程模型用于大规模数据集(大于1TB)的并行分析计算。2005年,Doug Cutting 又基于MapReduce,在Nutch搜索引擎实现了该功能。

        因此,大数据的两个重要问题:存储计算得到了解决。在存储方面,有Google的GFS和Doug Cutting的NDFS;在计算方面,有Google的MapReduce和Doug Cutting在Nutch上的MapReduce的实现。2006年,Doug Cutting进入了Yahoo(雅虎)公司,将NDFS和MapReduce进行了升级改造,并重新命名为Hadoop(NDFS也改名为HDFS, Hadoop Distributed File System)。这就是大名鼎鼎的大数据框架系统--Hadoop的由来。而Doug Cutting则被人们称之为“Hadoop之父”。因此,Doug Cutting既是Hadoop之父,又是Lucene的创始人,而ES则是基于Lucene而开发的搜索服务器。

        有意思的是,Hadoop的logo是一只黄色的大象,实际上是Doug Cutting他儿子的黄色玩具大象,而这只大象名字就是Hadoop,这便是Hadoop名字的由来。在2006年,Google再次发表了技术学术论文,介绍了自己的BigTable,这是一种分布式数据存储系统,一种用来处理海量数据的非关系型数据库。Doug Cutting在自己的Hadoop系统里,引入了BigTable,并命名为HBase

        Lucene是一套信息检索工具包,不包含搜索引擎,其包含索引结构、读写索引的工具、排序、搜索规则...工具类。那么es和Lucene有什么关系呢?es是基于Lucene,并做了一些封装和增强(上手更加容易)。因此,重新认识下Elasticsearch。

高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也是用Java开发并使用Lucene作为核心来实现所有索引和搜索功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

        落地场景(谁在使用):

1、维基百科

2、新闻网站,如搜狐新闻

3、Github,搜索千亿行代码

4、Stack Overflow(程序员异常讨论论坛)

5、电商网站,检索商品

6、日志数据分析,logstash采集日志,es进行复杂的数据分析,Kibana进行可视化展示=====ELK技术(Elasticsearch+Logstash+Kibana)。

7、BI,商务智能。

这是es的相关背景介绍,下一篇进行es的安装。