ES-什么是elasticsearch

前言

观今宜鉴古,无古不成今。
在学习elasticsearch以前,咱们要知道,elasticsearch是什么?为何要学习elasticsearch?以及用它能干什么?html

关于elasticsearch

如今,你还离得开搜索吗?不管是Google仍是百度提供的搜索入口,仍是项目本身的搜索,好比QQ提供的搜索入口等等,都大大的方便了咱们的工做、生活。可是你有没有想过——搭建属于本身的搜索服务,应用于你的博客项目、公司项目……
不管你想不想,都要学习!由于随着公司业务的增加,数据也爆炸性增加。对于数据的处理、日志分析,若是还采用传统的方法,这恐怕是灾难性的。因此,咱们是时候学习一个先进的搜索引擎了。
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。不管在开源仍是专有领域,Lucene能够被认为是迄今为止最早进、性能最好的、功能最全的搜索引擎库。
可是,Lucene只是一个库。想要使用它,你必须使用Java来做为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene很是复杂,你须要深刻了解检索的相关知识来理解它是如何工做的。
Elasticsearch也使用Java开发并使用Lucene做为其核心来实现全部索引和搜索的功能,可是它的目的是经过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
你觉得这些就完了?elasticsearch除了Lucene和全文搜索,咱们还能够描述它:git

  • 分布式的实时文件存储,每一个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎
  • 能够扩展到上百台服务器,处理PB级结构化或非结构化数据。

而且,这些功能都被集成到一个服务里面,elasticsearch也提供的与其它语言的接口,其中包括:程序员

  • Java
  • JavaScript
  • Groovy
  • .NET
  • PHP
  • Perl
  • Python
  • Ruby
  • 以及社区贡献的更多接口

使用咱们喜欢的语言经过RESTful API接口,访问9200端口,就能够与elasticsearch玩耍了。
上手elasticsearch很是容易,它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它开箱即用(安装便可使用),只需不多的学习既可在生产环境中使用。
随着越学越深刻,还能够利用Elasticsearch更多高级的功能,整个引擎能够很灵活地进行配置。能够根据自身需求来定制属于本身的Elasticsearch。github

elasticsearch的前世此生

多年前,一个叫作Shay Banon的刚结婚不久的失业开发者,因为妻子要去伦敦学习厨师,他便跟着也去了。在他找工做的过程当中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。
直接基于Lucene工做会比较困难,因此Shay开始抽象Lucene代码以便Java程序员能够在应用中添加搜索功能。他发布了他的第一个开源项目,叫作“Compass”。web

后来Shay找到一份工做,这份工做处在高性能和内存数据网格的分布式环境中,所以高性能的、实时的、分布式的搜索引擎也是理所固然须要的。而后他决定重写Compass库使其成为一个独立的服务叫作Elasticsearch。
第一个公开版本出如今2010年2月,在那以后Elasticsearch已经成为Github上最受欢迎的项目之一,代码贡献者超过300人。一家主营Elasticsearch的公司就此成立,他们一边提供商业支持一边开发新功能,不过Elasticsearch将永远开源且对全部人可用。
Shay的妻子依旧等待着她的食谱搜索……数据库

elasticsearch:面向文档

咱们知道,关系型数据库以记录和行的形式存储数据,可是在elasticsearch中,是以文档的形式存储数据。
但区别在于,文档要比数据表的行更加灵活。由于文档能够是多层次的,它(文档)鼓励你将属于一个逻辑实体的数据保存在同一个文档中,而不是散落在各个表的不一样行中。这样查询效率很高,由于咱们无需链接其余的表,咱们学习关系型数据库时,必定知道连表查询(尤为是链接多张表)是多么的费时吧!
咱们将在后续文章作更多的讲解。服务器

没有成熟的案例?

以前有人说,elasticsearch的缺点之一是没有成熟的案例加持,那咱们就来看看elasticsearch都有哪些成熟的案例:elasticsearch

  • 维基百科使用Elasticsearch来进行全文搜作并高亮显示关键词,以及提供search-as-you-type、did-you-mean等搜索建议功能。
  • 英国卫报使用Elasticsearch来处理访客日志,以便能将公众对不一样文章的反应实时地反馈给各位编辑。
  • StackOverflow将全文搜索与地理位置和相关信息进行结合,以提供more-like-this相关问题的展示。
  • GitHub使用Elasticsearch来检索超过1300亿行代码,能够参考A Whole New Code Search
  • 天天,Goldman Sachs使用它来处理5TB数据的索引,还有不少投行使用它来分析股票市场的变更。

可是Elasticsearch并不仅是面向大型企业的,它还帮助了不少相似DataDog以及Klout的创业公司进行了功能的扩展。
因此,elasticsearch能够灵活的应用于咱们的项目中。分布式

如何学好elasticsearch

除了万能的百度和Google 以外,咱们还有一些其余的学习途径:ide

  • elasticsearch官方文档:这个比较好点,能够多多参考
  • elasticsearch博客:这个吧,看看就行
  • elasticsearch社区:社区仍是很好的
  • elasticsearch视频:包括入门视频什么的
  • elasticsearch实战:该书籍的质量仍是不错的。
  • elasticsearch权威指南:一样的,这个也不错。

最后,你必定很好奇,elasticsearch索引能处理多大的数据

一个很好地问题,不幸的是,单一索引的极限取决于存储索引的硬件、索引的设计、如何处理数据以及你为索引备份了多少副本。

一般来讲,一个Lucene索引(也就是一个elasticsearch分片)不能处理多于21亿篇文档,或者多于2740亿的惟一词条。但达到这个极限以前,咱们可能就没有足够的磁盘空间了!
固然,一个分片如何很大的话,读写性能将会变得很是差。

扯了半天的淡,让咱们开始一个灵活的学习之旅吧

相关文章
相关标签/搜索