从广义上说,Elasticsearch也属于数据库范畴,但它能够轻松地进行大规模的横向扩展,以支持对PB级的结构化和非结构化海量数据的处理。由于关系型数据库对全文检索功能的支持相对不足(如传统关系型数据库并不能很好地解决大数据带来的问题,单机的统计和可视化工具也往往比较欠缺),所以一些实际项目需要将关系型数据库中的大数据同步到Elasticsearch中,以提供更加强大的全文检索功能。进入2015年,Elasticsearch的应用范围在进一步扩大。根据DB-Eignes的统计,截至2015年5月,ElasticSearch在搜索引擎类数据库中排名第2,如图1.18所示 [5] 。
图1.18 ElasticSearch的使用情况
众所周知,Elasticsearch和Solr、Nutch等都是基于Lucene构建的。了解Lucene的前世今生,更加有助于学好Elasticsearch。有关Lucene的更详细的内容,参见文献 [9] 。文献 [19] 介绍了基于Java标准规范实现REST的方法,这对于深刻理解JAX-RT标准和API设计,了解Jersey的使用要点和实现原理,以及基于REST的Web服务的设计思想,是很有帮助的。文献 [31] 系统讲述了构建大规模存储系统的核心技术和原理,分析了Google、Amazon、Microsoft和阿里巴巴的大规模分布式存储系统的原理。有关现代信息检索发展、倒排索引构建、搜索引擎系统研发等可以参阅文献 [13] [17] ,而有关信息检索、搜索引擎等核心技术的通俗叙述,可以参阅文献 [28] 。另外,Elasticsearch扩展性非常好,有很多官方和第三方开发的插件,文献 [33] 对分词、同步、数据传输、脚本支持、站点等类别进行了划分。