ElasticSearch简介

本文详细介绍了ElasticSearch的全文检索原理,从创建索引、文档分析到用户查询接口,以及它与MySQL在响应时间、分词和相关性上的区别。重点展示了ElasticSearch在大数据搜索和实时性方面的优势。
摘要由CSDN通过智能技术生成

目录

1、ElasticSearch概念:

2、全文检索:

①数据分类:

②全文检索概念:

3、全文检索实现过程:

①全文检索流程图:

②创建索引:

③创建文档对象:

④文档分析:

⑤创建索引:

⑥查询索引

⑦用户查询接口

⑧创建查询对象

⑨执行查询

⑩渲染结果

4、ElasticSearch和MySQL区别

①响应时间

②分词

③相关性


 

1、ElasticSearch概念:

ElasticSearch简称es,es是一个开源的高扩展的分布式全文检索引擎,通过创建的索引可以快速检索数据,同时本身扩展性能高,可以扩展到上百台服务器。

2、全文检索:

①数据分类:

(1)结构化数据:有固定格式和固定长度的数据,如数据库数据,元数据;

(2)非结构化数据:无固定格式和不定长的数据,如邮件、word文档等磁盘文件。

②全文检索概念:

(1)将非结构化数据中一部分信息提取出来,重新组合,使其变得结构化,通过对这一部分有结构化数据的搜索,找到对应非结构化数据,从而达到较快搜索目的。这部分从非结构数据中提取然后重组的数据就是索引。

如:字典中,汉字的拼音和部首就是索引,通过汉字拼音和部首可以快速找到汉字位置。

(2)先建立索引,然后对索引进行搜索的过程即全文检索。建立索引非常耗时,但索引一旦创建,便可以多次使用,全文检索主要处理的是查询。

3、全文检索实现过程:

①全文检索流程图:

全文检索分为:创建索引和查询索引两个过程。

(1)创建索引:将现实世界的结构化数据或非结构化数据,进行数据提取然后重新组合,创建索引过程。

(2)索引查询:用户查询请求,搜索创建的索引,并返回结果的过程。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZCO56uv5bCP54y_,size_20,color_FFFFFF,t_70,g_se,x_16

②创建索引:

对文档索引过程中,将用户要将搜索的内容提取出来,进行索引创建,索引存储在索引库中。

③创建文档对象:

获取的原始内容中目的是为了索引,在索引前需要将原始内容创建为文档,文档包括一个个域,域中存储属性。文档中有多个域,每个文档都有一个唯一标识,即id。

例:磁盘上一个文件可以看为一个文档,则该文件的文件名,文件大小,文件内容,文件路径即为文档的域。

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZCO56uv5bCP54y_,size_20,color_FFFFFF,t_70,g_se,x_16

④文档分析:

将原始内容创建为包含多个域的文档,还需对文档中域的内容进行分析,从而对域中内容进行分词。

⑤创建索引:

(1)索引目的是搜索,通过搜索索引词汇从而找到对应文档。

(2)倒排索引结构:通过索引找到对应文档。

(3)正排索引:根据文档到关键信息查询文档,只能顺序查找,数据量大查询效率低。

正排索引转化为倒排索引如下图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZCO56uv5bCP54y_,size_20,color_FFFFFF,t_70,g_se,x_16

⑥查询索引

查询索引即为搜索过程,用户通过输入关键字,从索引中进行搜索过程。通过关键字搜索索引,索引查找到对应文档内容,从而搜索到对应内容。 

⑦用户查询接口

全文检索提供用户搜索的界面供用户输入关键字,搜索完成展示结果。如下图:

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZCO56uv5bCP54y_,size_20,color_FFFFFF,t_70,g_se,x_16

⑧创建查询对象

用户输入关键字查询之前,需要先构建一个查询对象,查询对象可以指定查询的域,关键字等,查询对象会生成具体语法。

⑨执行查询

搜索过程中,通过关键字在倒排索引词典中查找索引,从而找到索引所链接的文档链表。

⑩渲染结果

以一个友好界面将结果展示给用户,用户根据搜索结果找到自己所需要的信息。

4、ElasticSearch和MySQL区别

①响应时间

(1)ElasticSearch:它是基于倒排索引,TB级数据在毫秒级就可以返回搜索结果。

(2)mysql:关键字模糊查询时,数据库需啊哟遍历整张表,数据量越大,查询效率越低。

(3)当用户输入关键字:手机,如下图数据:

elasticSearch会立即返回文档f,g,不用花费多余时间在其他文档上;

mysql则需要从文档a一直遍历到文档g,极大降低查询效率。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZCO56uv5bCP54y_,size_20,color_FFFFFF,t_70,g_se,x_16

②分词

(1)ElasticSearch:用户使用elasticSearch进行搜索时,elasticSearch会自动分好词;

如:输入”四川火锅“时,elasticSearch会做两件事:一是将”四川火锅“分为”火锅“和”四川“两个词;二是查找包这两个词的文档。

(2)mysql:数据库不支持分词功能,人工开发耗时耗力,组合词检索很难完成。

如:输入”四川火锅”时,数据库只会对“四川火锅”这四个字进行模糊查询,“四川好吃的火锅”这时查询不到的。

③相关性

(1)ElasticSearch:es支持相关性评分,通过合理优化,es可以将结果由评分高到底排列展示给用户,评分越高,表示相关性越高,满足用户需求。

如:搜索“跑步”,带有“跑步”的信息要比带有“跑”的信息靠前

(2)mysql:数据库不支持相关性搜索,数据模糊查询后,放回结果是根据表中存储顺序返回的,于是便会出现查询出大量毫无相关内容。-

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swttws.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值