从DB-Engines最新发布的全球数据库排名中,我们赫然发现ElasticSearch逆袭超越了Redis,从原先的第9名上升至第8名,而Redis则落后一名,排在了其后。
事实上,这场逆袭并不算太让人意外。近几个月,ElasticSearch发展势头良好,排名稳固前进,业界对其关注度与研究热情都在逐渐增涨。可以预见,ElasticSearch或将成为未来一段时间数据库相关从业人员新的技术焦点。
为了帮助大家深入了解ElasticSearch并自如运用于实践,小编收集起目前大家比较关注或尚存疑惑的一些问题,邀请到对ElasticSearch有深入研究的携程机票大数据基础平台Leader许鹏老师进行了一次专访,请他为大家答疑解惑:
独家专访INTERVIEW
许鹏
携程机票大数据基础平台Leader
《Apache Spark源码剖析》作者
Q1:关于学习ElasticSearch的切入
——众所周知,ElasticSearch是基于Apache Lucene的开源搜索和分析引擎。那么,学习ElasticSearch必须先从Lucene学起吗?
A:ElasticSearch的底层基石确实是Lucene,但学习的切入点可以有多种,不一定非要从Lucene开始学起。简要列一下不同需求下的学习建议:
应用开发,首先了解ElasticSearch的搜索和分析语法,掌握ElasticSearch特有的DSL和相应的API;
集群运维,除了应用开发的内容之外,还需要了解Lucene的基本概念。对Lucene的学习有助于集群的合理配置以及在遇到实际问题时的错误排查。
Q2:关于ElasticSearch的优势与不足
——与Solr等同类产品相比,ElasticSearch有哪些优势与不足?
A:ElasticSearch比Solr出生得晚,但是很快就超越Solr成为分布式搜索引擎的Top 1, 原因有不少,个人认为值得关注的是:
优势:
ElasticSearch开箱即用,部署简单,没有对第三方应用的依赖,SolrCloud依赖于ZooKeeper;
ElasticSearch的查询语法简单易懂,降低了使用门槛。当然,对于“是使用Json还是Lucene的原生查询语法”确有争议,对于一般用户来说,过于精简的语法可能会使学习曲线变陡;
ElasticSearch支持数据分片自平衡,SolrCloud要到最近的版本才支持;
ElasticSearch的生态链完整,比如ELK形成完整的Ingest→Search→Visualization数据管道;
ElasticSearch的受众群庞大,拥有广泛的使用案例。
不足:
ElasticSearch最大的不足在于开源参与方面,诚然ElasticSearch的核心模块是开源的,但是除了Elastic公司的员工之外,其它人是无法提交Patch或新功能的,而Solr或者Lucene是任何人都可以提交Patch,只要通过松散形式的委员会的认可,就可以提交到主分支。
Q3:关于ElasticSearch是否能代替NoSQL
——既然除了搜索、监控以外,ElasticSearch还能用作数据存储,那么将来是否可以用它来替代NoSQL(如:MongoDB、HBase)?
A:ElasticSearch不能代替MongoDB和HBase,因为解决的痛点不同。ElasticSearch主要解决快速搜索问题,但在支持事务以及一致性方面做得还不够,特别是如果要从ElasticSearch中导出大量数据会非常缓慢。
以下是常见大数据系统所要解决问题的简要汇总。
Q4:关于对ElasticSearch的展望
——随着智能时代的到来,机器学习正引领着各行各业发展变革,而利用ElasticSearch,机器学习可进行更智能的搜索和分析。对此,您有什么看法或展望?
A:通过分析Elastic公司在X-Pack这一产品中封装了哪些内容,我们可以大概了解ElasticSearch的发展重点。
X-Pack中有机器学习部分的内容,可以看出仅仅把ElasticSearch作为一个搜索引擎是不够的,还需要在此基础上加入数据的应用部分。
每家公司的具体业务是不同的,但是Elastic公司希望用户依然停留在ElasticSearch这个技术栈上,所以他们推出了机器学习功能,让ElasticSearch有一站式解决的能力。
从用户的角度来看,不建议将ElasticSearch作为机器学习框架的优选目标,而是将其与其它的机器学习框架和计算引擎结合。
Q5:关于学习ElasticSearch的建议
——可以预见,ElasticSearch在今后很长一段时间里将会是愈加受到重视与重用的技术之一,那么您对希望入门或熟练运用ElasticSearch的朋友有什么学习或就业建议?
A:ElasticSearch解决的最大痛点是海量数据下搜索困难,所以ElasticSearch在大数据的解决方案中占有一席之地是不争的事实。这也意味着任何一家提供大数据服务的组织都需要这方面能力的人员。
ElasticSearch的运维和开发涉及到的点比较多,在技术上要深入了解可以多从这几个层面来入手:
学习过程中多看几遍ElasticSearch Reference的内容,了解Lucene Index、Segments、ElasticSearch Index、Shard这些基本概念之间的联系与区别;
了解ElasticSearch是如何解决数据的分布问题;
了解数据的写入和读取过程;
了解集群的管理,包括扩容、缩容、版本升级;
了解如何监控和管理一个中型规模的集群,了解可能出现问题的点会在哪,做到心中有数;
了解如何与常见的流数据处理引擎(如Apache Flink、Storm)和分布式分析引擎(Apache Spark)相对接;
当然可能的话,多了解一些JVM及OS对于集群运维也会大有裨益。