ElasticSearch简称为ES,以后就使用ES作为描述了
一: 前提内容
1.1 es
ElasticSearch就是一个搜索服务器
搜索:
1.2 关系型数据库查询的问题
问题1:如果使用模糊查询,左边有通配符(%等),不会走索引,会全表扫描,性能低
问题2:关系型数据库提供的查询,功能太弱
二: 倒排索引
前面两种问题可以通过倒排索引进行解决
2.1 正向索引
2.2 倒排索引
将一段文本按照一定的规则,拆分为不同的词条(term)
比如:将“床前明月光”和“明月几时有”进行分词,如何可以按下图进行存储
定义:将各个文档中的内容,进行分词,形成词条。然后记录词条和数据的唯一标识(id)的对应关系,形成的产物
。
三: ES数据的存储和搜索原理
3.1 存储
这个与自然语言处理中的知识点类似,写过自然语言处理还是比较容易懂的
ES中数据叫做document(文档),相当于关系型数据库中表的一条记录
ES中文档是以json格式的数据进行存储到索引库中的,es将document里面的所有内容进行分词,没有的词条再次增加,最后的倒排索引结果如下
3.2 搜索
数据库查询存在的问题:
es中的搜索步骤如下:
解决性能低:
解决功能弱: