全文检索服务-ElasticSearch

一、有了数据库查询为什么还要ElasticSearch?

数据库一般只适合保存搜索结构化的数据,对于非结构化的数据( 比如文章内容),只能通过like%%模糊查询,但是在大量的数据面前,like%%有两个弊端:

1)搜索效率会很差,因为是做一个全表扫描(like%%会让索引失效)

2)搜索没办法通过相关度匹配排序(可能返回的是用户不关心的结果)

ElasticSearch就可以解决这些问题

二、什么叫全文检索

全文检索 将非结构化数据中的一部分信息提取出来,重新组织,使其变得具有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。

什么叫非结构化数据:列如一篇文章内容中,涵盖了中文英文等,无法从文章中找出能组织起文章的结构的具体实例。

索引:字典的拼音表和部首检字表就相当于字典的索引,通过查找拼音表或者部首检字表就可以快速的查找到我们要查的字。

这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。

三、全文检索的流程

获取到原始文档之后,通过相关的处理,放入到索引库中(索引库主要用于存储索引),用户再通过索引库进行搜索,查询出结果

四、创建文档的过程

1.获得原始文档

原始文档是指要索引和搜索的内容,文档的来源不限。

2.创建文档对象(Document)

获取原始文档的目的是为了索引,在索引前需要将原始内容创建成文档(Document),文档中包括一个一个的域(Field),域中存储内容。

3.分析文档(分词)

将原始内容创建为包含域(Field)的文档(document),需要再对域中的内容进行分析,分析的过程是经过对原始文档提取单词将字母转为小写去除标点符号去除停用词等过程生成最终的语汇单元。

4.创建索引

创建索引是对语汇单元索引。

根据文字,与以下流程图一起理解

4.1正排排索引

简单来说,正向索引就是根据文件ID找到该文件的内容,在文件内容中匹配搜索关键字,这种方法是顺序扫描方法,数据量大、搜索慢

4.2倒排索引

倒排索引和正向索引刚好相反,是根据内容(词语)找文档

五、ElasticSearch(DB - NoSQL数据库 - 非关系型数据库)

5.1索引库(index)

索引库是ElasticSearch存放数据的地方,可以理解为关系型数据库中的一个数据库。我们操作的数据被存储和索引在分片(shards)中,索引只是一个把一个或多个分片分组在一起的逻辑空间。

5.2 映射类型(type)

映射类型用于区分同一个索引下不同的数据类型,相当于关系型数据库中的表

注意:在 6.0 的index下是无法创建多个type,并且会在 7.0 中完全移除。

5.3 文档(documents)

文档是ElasticSearch中存储的实体,类比关系型数据库,每个文档相当于数据库表中的一行数据

5.4 字段(fields)

文档由字段组成,相当于关系数据库中列的属性

5.5 分片与副本

如果一个索引具有很大的数据量,它的数据量可能会超出单个节点的容量限制(硬盘容量),而且单个节点数据量过大,执行性能也会随之下降,每个搜索请求的执行效率都会降低。 为了解决上述问题, Elasticsearch 提出了分片的概念,索引将划分成多份,称为分片。每个分片都可以创建对应的副本,以便保证服务的高可用性。

5.6分词器

这里我使用的是中文分词器和拼音分词器

中文分词器:

拼音分词器:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值