Elasticseach 初识

Elasticsearch:分布式,高性能,高可用,可伸缩的搜索和分析系统。

 

1.什么是搜索?

 

互联网的站内搜索:电商网站、新闻网站、招聘网站...

 

IT系统的搜索:OA软件,办公自动化软件、会以管理、项目管理...

 

 

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

 

我们都知道数据是存放在数据库中的。所以在实现搜索的时候我们会很自然的想到应用数据库的搜索。

但是这里面有一些小细节问题:

 

1)

Elasticseach 初识_第1张图片

 

2)

 

不能将搜索词查分:比如在查找“肖申克的救赎”时候打字错打为“肖申的救赎”这样便查不出了。

 

3.什么是全文检索和Lucene?

 

1)全文检索,倒排索引

Elasticseach 初识_第2张图片

 

假设数据库里面有100万条数据,按照之前的思路要扫描100万次。

 

利用倒排索引,进行搜索,假设100万条数据,拆分为1000万个词语,那么在倒排索引中就有1000万行,我们可能并不需要搜索1000万次,很可能在第1次,第100次的时候就找到要的数据。

 

2)Lucene

 

Lucene就是一个jar包,里面包含封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。我们在java开发的时候,引入 Lucene jar,然后基于Lucene的api进行开发。

 

 

4.什么是Elasticsearch?

 

Elasticseach 初识_第3张图片

这时候会出现一系列的问题。

 

Elasticseach 初识_第4张图片

Elasticsearch应运而生。

 

优势

1)自动维护数据的分布式建立,还有搜索请求分布到多个节点进行执行。

 

2)自动维护数据冗余副本,保证一些机器宕机了,数据不会丢失。

 

3)封装了更多的高级功能:复杂的搜索功能,聚合分析功能,基于地理位置的搜索...

 

你可能感兴趣的:(Elasticseach)