6

什么是elasticsearch?

wiki上面的解释是:

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就是一个分布式、高性能、高可用、可伸缩的搜索和分析系统

下面围绕以下四个问题展开来说明什么是Elasticsearch以及为什么使用Elasticsearch

1、什么是搜索?
2、如果用数据库做搜索会怎么样?
3、什么是全文检索、倒排索引和Lucene?
4、什么是Elasticsearch?

1、什么是搜索?

一提到搜索我们可能会想到百度,比如说我们想找寻任何信息的时候,就会上百度去搜索一下,找一部自己喜欢的电影,或者找一本喜欢的书,或者找一条感兴趣的新闻。
通俗的来讲,搜索就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键字,然后就期望找到这个关键字相关的有些信息。

2、如果用数据库做搜索会怎么样?

做软件开发的话,或者对IT、计算机有一定的了解的话,都知道,数据都是存储在数据库里面的,比如说电商网站的商品信息,招聘网站的职位信息,新闻网站的新闻信息等等。所以说,很自然的

1、每条记录的指定字段的文本可能会很长,比如说商品描述字段的长度,有长达数千个,甚至数万个字符,这个时候,每次都要对每条记录的所有文本进行扫描

2、不能讲搜索词拆分开来,尽可能去搜索更多的符合你期望的结果,比如生化机,就搜索不出来生化危机
这些场景下,用数据库来实现搜索是太不靠谱的,通常来说,性能也会非常差。

3、什么是全文检索、倒排索引和Lucene?

全文检索:计算机索引程序通过扫描文章中的每个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。

对于倒排索引,也就是ES在全文检索时对每个词建立索引是采用倒排索引的方式。
它源于实际应用中需要根据属性的值来查找记录。这中索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引。

lucene就是一个全文检索引擎工具包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。

4、什么是Elasticsearch?

这里附上中华石衫老师画的手工图,哈哈哈!!!
图片描述

简言之就是elasticsearch就是对lucene的一个封装,让复杂的lucene变得简单化,更易用。
例如:
1、自动维护数据将分布到多个节点的索引的建立,还有搜索请求分布到多个节点的执行

2、自动维护数据的冗余副本,保证说,一些数据宕机了,不会丢失任何的数据

3、封装了更多的高级功能,以给我们提供更多高级的支持,让我们快速的开发应用。开发更多的复杂的应用:复杂的搜索功能、聚合分析功能、基于地理位置的搜索


郑国
301 声望88 粉丝