【新产品上线啦】51CTO播客,随时随地,碎片化学习
帮飞总把文章中间和底部的广告(如果有显示的话)各点一下,谢谢大家。
公众号上有人让我聊聊Elastic Search。其实前几天上市前也有人问了,我的留言是这样的:
之后发生的事情,ElasticSearch一上市,股价就翻倍了,IPO35一股的股票开盘就涨到了70,之后一直维持在70以上。这种开盘直接翻倍的IPO,在美股整体大跌的这一天里,也是非常罕见的现象。
那么问题来了,为什么Elastic Search一上市就那么牛逼?问题又来了,为什么飞总在Elastic Search一上市那天没有头版头条的大书特书这个新闻?
第一个问题的答案,我今天试图写一篇文章回答一下。第二个问题的答案,主要原因是飞总其实对全文本搜索和Lucene不太懂。所以飞总就怂了。怕写的不对被大家乱棍打死。今天之所以战战兢兢的跳出来写,是因为后台留言的人太多了。飞总怕不写点东西也会被乱棍打死。所以大家将就着看,飞总将就着写。
Elastic Search自2010年问世以来,就迅速的成为了非结构化数据搜索的事实上的标准软件。如果一定要说一个理由为什么我们见到IPO股价翻倍的话,就是这个东西是真的解决实际问题。在Apache的开源项目里,一直以来都是良莠不齐的。有好用的,有凑合着能用的,还有不好用的。
说到ES, 就不得不说Lucene。Lucene是一个Apache历史悠久的文本搜索引擎,现在一般大家都指代Lucene core。这个引擎提供了一系列的API,给其他项目去使用,和架构不同的搜索引擎服务。Lucene的强大毋庸置疑。但是我们也能想象一下,如果要用Lucene的唯一途径就是通过API访问的话,这无疑也就太傻逼了一些。
Lucene团队有另外一个项目,也是属于开源历史非常悠久的,叫做Solr。在很多时候,Apache Lucene发布新版本的时候都是一个新版本的Lucene伴随着一个新版本的Solr。这个Solr等价于Lucene团队使用自己的Lucene API写的一个搜索引擎应用。
很长一段时间里,Lucene搭配Solr就是这个开源项目的标配。Solr本身并不是一个低质量的开源项目。能够开发出Lucene Core的团队,显然不会去写个傻逼的应用程序去忽悠大家。实际上很多公司,包括亚马逊都用了Apache Solr。Solr本身也是一个高质量的开源项目。
2010年的时候,事情发生了一些变化。有人要对Lucene团队的东西搞点事情。这一年ElasticSearch开源了。这标志着鸠占鹊巢的开始。ElasticSearch同样拿着Lucene core,自己搞出了一个搜索引擎来。这个搜索引擎从此开始和Lucene团队的Solr展开了PK,并且几年时间后就后来居上,把Solr给干翻了。
我之前说过,Solr本身其实挺优秀的一个搜索引擎产品。ElasticSearch到底是怎么把Solr干翻的呢?飞总胡说八道开始了。
Elastic Search相对于Solr来说第一个特点是容易用容易安装。基本上来说不需要太多的配置,装上就可以用。这一点对很多非geek的用户都很重要,毕竟小白还是很多的。
Elastic Search第二个和Solr本质的不同是它意识到了人类搜索的时候除了做全文本搜索以外,很多时候需要做一些查询分析,比如聚合查询啊。它就干脆把这些东西也给做了。而Solr这方便就比较傻逼了一点。
Elastic Search的第三个和Solr的不同是,它的系统一开始就是为了分布式系统而设计的。它内置了Zen模块,可以处理分布式系统的问题。当然这个模块其实也是Elastic Search的bug重灾区。著名的脑裂问题再Elastic Search里很常见。
Solr一开始显然没考虑到这个问题,到后来Solr团队的解决方案是用ZooKeeper去搭一个解决方案。ZooKeeper当然是个很成熟的Apache开源项目。但是用另外一个开源项目去解决自己的问题,无疑还是显得更加厚重了。
至于其他的很多优点,比如说Elastic Search的系统架构很优美,是标准的框架和组件模式,允许不同的人轻易的替换各种组件。比如说Elastic Search里索引建立速度很快,从数据导入到检索1秒就够了等等,都是Elastic Search牛逼的地方。
所以很多人这样说,如果你要新上一艘船,又可以忍受脑裂问题偶尔抽风的话,那就上Elastic Search吧。尽管它有这样那样的问题,它还是一艘很好使的船。如果你在Solr上待很久, 那就继续待着吧。Solr其实也挺好的,就是有点老古董,很厚重。
实际的情况是大家都更喜欢Elastic Search。很多大客户都切换过来了,其中就有全球最大的同性恋交友网站GitHub。其实Solr还是有很多忠实的客户的,比如说Amazon的AWS推出的CloudSearch就是拿Solr改的。但是架不住大家都爱Elastic Search,AWS在一段坚持一段犹豫之后,也终于又推出了Elastic Search服务。所以我觉得Elastic Search这个壳,顺利的把Lucene团队的core给发挥的淋漓尽致,并干翻了Lucene团队自己的壳了。
#p#分页标题#e#
值得一提的是Elastic Search的框架设计非常的优雅,是经典的框架插件模式。这说明Elastic Search一开始就知道自己将来要怎么赢利。在一个框架插件的生态圈里,我们是应该开源框架,卖收费的插件赚钱呢?还是开源插件,卖收费的框架赚钱呢?答案是显而易见的。
Elastic Search开源了整个框架,但是插件并非都是开源的。你既可以选择自己投入人员去写插件,也可以花钱买我写好的插件嘛。所以Elastic Search这个软件虽然很好,但是对那些权限管理啊之类的企业级用户很有必要的功能,对不起了,开源的框架里没有,插件有。呵呵。
写这个软件的人,不但软件写的好用,而且想清楚了怎么开源壮大社区,怎么通过插件赚钱,无疑是个天才的天才。Elastic Search这家公司如果都不能发财的话,那大数据这一波热潮,真的只有泡沫,没有真金白银了。所以我看好,非常非常的看好这家公司。
【本文为51CTO专栏作者“徐飞”的原创稿件,转载请通过作者微信公众号“飞总聊IT”获取联系和授权】