ElasticSearch(1)ES数据的存储和搜索原理

ElasticSearch简称为ES,以后就使用ES作为描述了

一: 前提内容

1.1 es

ElasticSearch就是一个搜索服务器

说明其就是一个软件,安装之后就可以使用了

搜索:

搜索就是查询

1.2 关系型数据库查询的问题

问题1:如果使用模糊查询,左边有通配符(%等),不会走索引,会全表扫描,性能低

使用通配符后,在数据表中的当前列上作用的索引会失效(当数据比较多时,可以对列名加上索引,提升查询的性能)

问题2:关系型数据库提供的查询,功能太弱

二: 倒排索引

前面两种问题可以通过倒排索引进行解决

2.1 正向索引

根据诗名去得到诗句,如下:
在这里插入图片描述

2.2 倒排索引

将一段文本按照一定的规则,拆分为不同的词条(term)

在es中,分词是ES自动帮我们生成的

比如:将“床前明月光”和“明月几时有”进行分词,如何可以按下图进行存储
在这里插入图片描述

定义:将各个文档中的内容,进行分词,形成词条。然后记录词条和数据的唯一标识(id)的对应关系,形成的产物

三: ES数据的存储和搜索原理

3.1 存储

这个与自然语言处理中的知识点类似,写过自然语言处理还是比较容易懂的

ES中数据叫做document(文档),相当于关系型数据库中表的一条记录

ES中文档是以json格式的数据进行存储到索引库中的,es将document里面的所有内容进行分词,没有的词条再次增加,最后的倒排索引结果如下
在这里插入图片描述

3.2 搜索

数据库查询存在的问题:

1.性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低
2.功能弱:如果以”华为手机“作为条件,查询不出来数据

es中的搜索步骤如下:

es中的term会以一种树形结构进行存储
es会将搜索的内容首先进行分词,然后才去分词,最后对结果进行求交集或并集

在这里插入图片描述
解决性能低:

使用“手机”作为关键字查询

  1. 如:生成的倒排索引中,词条会排序,形成一颗树形结构,提升词条的查询速度

解决功能弱:

使用“华为手机”作为关键字查询

  1. es会将搜索的内容首先进行分词,然后才去分词,最后对结果进行求交集或并集,将图中内容进行如下获取:
    华为:1,3
    手机: 1,2,3
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

?abc!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值