elasticsearch简写es,es是一个高扩展、开源的全文检索和分析引擎,它可以准实时地快速存储、搜索、分析海量的数据。
全文扫描
顺序扫描
第一种实现方式是顺序扫描,像文件夹的搜索一样,会检查每个文件,找到匹配的字段。
倒排索引
顺序索引是文档到词汇的映射,倒排索引就是词汇到文档的映射,比如说现在有几个文档
Id | Context | 😊 |
---|---|---|
1 | 在学校学习 | |
2 | 在家学习 | |
3 | 在家玩 | |
4 | 在学校玩 |
经过切词后得到每个文档的关键词,(已经去除停用词)
Id | Context | 😊 |
---|---|---|
1 | 学校,学习 | |
2 | 家,学习 | |
3 | 家,玩 | |
4 | 学校,玩 |
再构建关键词到文档的映射
Id | Context | 😊 |
---|---|---|
学校 | 1,4 | |
家 | 2,3 | |
玩 | 3,4 | |
学习 | 1,2 |
就得到了从关键词到id的映射,搜索时就可以很快的得到关键词对应的id
搜索引擎建立分三部:爬数据、分词、建倒排索引
lucene可以用来建立倒排索引,es是基于lucene实现的,封装了restful的api,通过http请求就可以完成操作。
名词解释
- 索引:存放数据的地方,相当于一个数据库
- 文档:定义了json字段的类型,分keyword和text两种,keyword不会再被分割,本身就是一个关键词,text会被分词后再倒排
- 类型:存放真实文档数据
网友评论