概述
一款非常强大的开源搜索引擎,能够实现在海量数据中快速检索到满足条件的数据,同时还可以实现分页、高亮显示等功能
- 正向索引
先通过文件名找到具体的文件,再获取文件中的内容过程 - 倒排索引
从文件的内容查找,得到包含这些内容的文件列表,再得到文件对应的信息,如文件名、作者、文件大小、创建时间等
1、将文档的内容通过算法进行分词,得到一个词条列表
2、将词条列表当作key,包含该词条的文档id列表作为值,形成一张表
3、词条是唯一的,所以给词条创建索引,提高搜索效率
4、通过词条查询,得到文档ID,再通过文档ID查询到具体的文档
ES相关概念对比MySQL
索引库操作
- 索引库相当于数据表
- mapping映射
- 索引库中文档的约束
- 索引库中文档的约束
创建索引库并指定mapping
PUT /索引库名
#创建索引
PUT /heima
{
"mappings": {
"properties": {
"info":{
"type": "text",
"analyzer": "ik_smart",
"index": true,
"store": true
},
"email":{
"type": "text",
"analyzer": "ik_max_word"
},
"brand":{
"type": "keyword"
},
"name":{
"properties": {
"firstName":{
"type":"keyword"
},
"lastName":{
"type":"keyword"
}
}
},
"birth":{
"type": "date",
"format": "yyyy-MM-dd"
}
}
}
}
文档操作
- 增加文档
POST /索引名/_doc/文档ID
{
//json格式
}
- 查询文档
GET /索引库名称/_doc/文档ID
- 删除文档
DELETE /索引库名称/_doc/文档ID
- 修改文档