本文主要介绍一下索引库及文档的一些增删改查操作, 以下都是一些常用的操作, 无需死记硬背, 只需要用到的时候常翻阅即可;
当然学习索引库和文档的一些基本操作还是要先在虚拟机启动一下 elasticsearch 及 kibana, 启动成功后输入 172.16.xx.xxx:5601 后出现以下界面即启动成功:
索引库的操作及文档的操作
- ⓵ 索引库操作
- 1.1 创建索引库
- 1.2 查询索引库
- 1.3 修改索引库
- 1.4 删除索引库
- 1.5 总结
- ⓶ 文档操作
- 2.1 新增文档
- 2.2 查询文档
- 2.3 删除文档
- 2.4 修改文档
- 2.4.1 全量修改
- 2.4.2 增量修改
- 2.5 总结
⓵ 索引库操作
学习索引库的一些基本操作, 首先要明白 mapping 这个映射属性的作用, mapping 是对索引库中文档的约束, 常见的约束类型有以下多种:
- type: 字段数据类型, 如 text (文本) / keyword (精确值, 如自己的 ip 地址); 常见的数值类型如 long / integer / short / double 等; 还有布尔类型 / 日期及 object 对象;
- index: 是否创建索引, 默认值为 true;
- analyzer: 使用哪种分词器, 是 ik_smart 还是 ik_max_word;
- properties: 该字段的子字段.
1.1 创建索引库
接下来将演示索引库的增删改查操作; 首先创建索引库和映射, 基本语法如下:
PUT /fug
{
"mappings": {
"properties": {
"info": {
"type": "text",
"analyzer": "ik_smart"
},
"email": {
"type": "keyword",
"index": false
},
"name": {
"type": "object",
"properties": {
"firstName": {
"type": "keyword"
},
"lastName": {
"type": "keyword"
}
}
}
}
}
}
解读:
- 上面就是创建了一个名为 fug 的索引库, 请求方式是 PUT, 请求路径就是 /fug, 当然这里可以自己定义, 请求参数就是 mapping 映射;
- properties 里面就是多个子字段, 包括 info / email / name 这几个子字段;
- info 字段使用了 analyzer 分词器, email 字段 index 为 false, 也就是不创建索引;
- 在 name 字段里面还包括两个子字段, 因此 name 字段的类型为 object 对象类型.
1.2 查询索引库
这里还是以代码的形式演示, 然后进行解读; 查询索引库的代码比较简单, GET /fug
即可; 执行完结果如下:
1.3 修改索引库
这里需要注意, 关于正向索引和倒排索引的概念上一篇文章已经介绍, 🐝点击这里直达; 虽然倒排索引的结构不是很复杂, 但是数据结构只要是创建完成了, 就不要再进行改变了, 如你改变了分词器, 那么就需要重新创建倒排索引, 因此索引库一旦创建, 就无法改变 mapping; 那么如果迫不得已想要改变该怎么办呢???
虽然不能改变已有的 mapping 中的字段, 但是可以添加新的字段到 mapping 中, 这样也不会出现倒排索引改变引起的后果, 因此修改索引库操作其实就是往 mapping 中添加新的字段;
PUT /fug/_mapping
{
"properties": {
"age": {
"type":"integer"
}
}
}
语法说明: PUT /索引库名称/_mapping
.
POST /fug/_doc/1001
{
"info": "今天是个好日子,早起的虫儿有鸟吃",
"email": "1327999999@q.com",
"name": {
"firstName": "想",
"lastName": "理"
}
}
这时候如果进行查询操作, 则发下已经存在了 age 这个字段;
1.4 删除索引库
删除索引库的操作也比较简单, DELETE /fug
, 这里不再演示.
1.5 总结
- 创建索引库:
PUT /索引库名
; - 查询索引库:
GET /索引库名
; - 修改索引库 (添加字段):
PUT /索引库名/_mapping
; - 删除索引库:
DELETE /索引库名
.
⓶ 文档操作
索引库已经创建完成, 接下来往里面插入数据;
2.1 新增文档
基本语法: POST /索引库名/_doc/文档id
;
2.2 查询文档
基本语法: GET /索引库名/_doc/文档id
;
2.3 删除文档
基本语法: DELETE /索引库名/_doc/文档id
;
2.4 修改文档
修改文档的方式有两种;
- 全量修改: 直接覆盖原来的文档; 也就是说根据指定的文档 id 删除文档, 然后再新增一个相同文档 id 的文档; 当然根据文档 id 删除时, 如果不存在, 也是会执行新增操作, 这也就意味着由修改文档变成了新增文档操作了;
- 增量修改: 修改文档中的部分字段; 也就是说只修改指定文档 id 匹配的文档中的部分字段.
2.4.1 全量修改
基本语法: PUT /索引库名/_doc/文档 id
;
PUT /fug/_doc/1
{
"info": "今天是 2023 年 3 月 2 日",
"email": "1327999999@q.com",
"name": {
"firstName": "想",
"lastName": "理"
}
}
2.4.2 增量修改
基本语法: POST /索引库名/_update/文档 id
;
POST /fug/_update/1
{
"doc": {
"email": "10101010101@qq.com"
}
}
2.5 总结
- 创建文档:
POST /索引库名/_doc/文档id
; - 查询文档:
GET /索引库名/_doc/文档id
; - 删除文档:
DELETE /索引库名/_doc/文档id
; - 修改文档
-
- 全量修改:
PUT /索引库名/_doc/文档id
;
- 全量修改:
-
- 增量修改:
POST /索引库名/_update/文档id
.
- 增量修改: