Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.
即:
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
通俗的讲:
elasticsearch就是一个分布式、高性能、高可用、可伸缩的搜索和分析系统web
一提到搜索咱们可能会想到百度,好比说咱们想找寻任何信息的时候,就会上百度去搜索一下,找一部本身喜欢的电影,或者找一本喜欢的书,或者找一条感兴趣的新闻。
通俗的来说,搜索就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键字,而后就指望找到这个关键字相关的有些信息。算法
作软件开发的话,或者对IT、计算机有必定的了解的话,都知道,数据都是存储在数据库里面的,好比说电商网站的商品信息,招聘网站的职位信息,新闻网站的新闻信息等等。因此说,很天然的数据库
一、每条记录的指定字段的文本可能会很长,好比说商品描述字段的长度,有长达数千个,甚至数万个字符,这个时候,每次都要对每条记录的全部文本进行扫描服务器
二、不能讲搜索词拆分开来,尽量去搜索更多的符合你指望的结果,好比生化机,就搜索不出来生化危机
这些场景下,用数据库来实现搜索是太不靠谱的,一般来讲,性能也会很是差。elasticsearch
全文检索:计算机索引程序经过扫描文章中的每一个词,对每个词创建一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先创建的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程相似于经过字典中的检索字表查字的过程。分布式
对于倒排索引,也就是ES在全文检索时对每一个词创建索引是采用倒排索引的方式。
它源于实际应用中须要根据属性的值来查找记录。这中索引表中的每一项都包括一个属性值和具备该属性值的各记录的地址。因为不是由记录来肯定属性值,而是由属性值来肯定记录的位置,于是称为倒排索引。ide
lucene就是一个全文检索引擎工具包,里面包含了封装好的各类创建倒排索引,以及进行搜索的代码,包括各类算法。工具
这里附上中华石衫老师画的手工图,哈哈哈!!!性能
简言之就是elasticsearch就是对lucene的一个封装,让复杂的lucene变得简单化,更易用。
例如:
一、自动维护数据将分布到多个节点的索引的创建,还有搜索请求分布到多个节点的执行网站
二、自动维护数据的冗余副本,保证说,一些数据宕机了,不会丢失任何的数据
三、封装了更多的高级功能,以给咱们提供更多高级的支持,让咱们快速的开发应用。开发更多的复杂的应用:复杂的搜索功能、聚合分析功能、基于地理位置的搜索