小白学习-ElasticSearch教程 - 索引 | 映射 | 文档 | 简单操作
Posted 做猪呢,最重要的是开森啦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白学习-ElasticSearch教程 - 索引 | 映射 | 文档 | 简单操作相关的知识,希望对你有一定的参考价值。
0. 基础认识:
- 索引相当于MYSQL的数据库实例
- 映射相当于MYSQL的表表结构(字段和类型)
- 文档相当于MYSQL的每一行数据
1. 索引操作:
索引操作主要有创建,删除,关闭,打开,别名等
1.1. 索引创建
- 请求体的mapping即为映射,如果不写则不指定字段类型,则添加文档时会自动映射,下文第二节会讲
- settings中设置索引的配置项,比如主分片数和副分片数
·
【HTTP请求】:
·
【API请求】:实体类要标注@Document、@Field这些信息
·
1.2. 索引删除
【HTTP请求】:
·
【API请求】:
·
1.3. 索引关闭和开启
关闭索引之后ES索引只负责数据存储,不能提供文档操作,直到索引再次打开
【HTTP请求】:
·
【API请求】:ElasticsearchRestTemplate没有API,可以使用RestHighLevelClient客户端来操作
·
1.4. 索引查询:
【HTTP请求】:查询指定索引
·
【HTTP请求】:查询所有索引
·
【API请求】:查询指定索引
·
2. 映射操作:
映射类似于关系型数据库的表结构,ES可以自动动态映射也可以手动静态映射,建议用户手动创建。
- 动态映射:插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构)
- 静态映射:创建索引时,手动添加文档映射,像上述1.1的mapping
·
2.1. 查看索引映射
【HTTP请求】:
·
【API请求】:
·
2.2. 扩展映射(新增字段)
【已经建好映射,但需要扩展新的字段,怎么办?】
- 如果原有索引还没有文档数据,则可以删除索引重新创建
- 如果原有索引已经有文档数据,则可以在原有映射扩展字段
【HTTP请求】:像上述1.1创建索引时已有title、category映射,现新增content映射
·
【API请求】:在实体类添加@Field注解或重新putMapping即可·
indexOperations.putMapping(indexOperations.createMapping(Blog.class));
2.3. 数据迁移(重建索引)
对于已有的索引映射,我们不能直接修改映射,比如修改上述content映射类型为keyword,这时不允许的
- 如果原有索引还没有文档数据,则可以删除索引重新创建
- 如果原有索引已经有文档数据,则可以创建新的索引,把老的文档迁移(_reindex)过来
【HTTP请求】:像上述1.1创建索引时已有title、category映射,现新增content映射
·
【API请求】:RestHighLevelClient客户端来操作*
·
3. 文档操作:根据id进行CURD
这里仅是简单的CURD操作,根据文档id进行操作,后续根据Query操作见链接(待补充)
3.1.添加文档
【HTTP请求】:创建一个blog文档并设置文档id为1,不指定的话会随机生成字符串id
·
【API请求】:save方法,实体类@Id会自动递增id
·
3.2.全量修改文档:
- HTTP请求时,如果请求体字段缺失,则查询不会显示缺失的字段
- API请求时,如果请求体字段缺失,则会显示默认值
【HTTP请求】:PUT 全量修改- 如果文档id不存在则会新建文档
·
【API请求】:同样是save方法,如果文档id不存在则会新建文档,存在则全量修改
·
无法只修改某个字段,只能覆盖所有字段。若某个字段没有值,则会写入null
3.3.局部修改文档:
可以修改局部字段,其余字段不变
【HTTP请求】:POST 局部修改- 如果文档id不存在则异常
·
【API请求】:update方法,如下只修改content字段,如果文档id不存在则异常
·
3.4.查询文档:
【HTTP请求】:查询指定文档id文档
·
【HTTP请求】:查询所有
·
【API请求】:get方法 - 查询指定文档id数据
·
【API请求】:search方法 - 所有文档
·
3.5.删除文档:
【HTTP请求】:DELETE 如果id不存在则404
·
【API请求】:delete方法,文档id不存在不会异常
·
以上是关于小白学习-ElasticSearch教程 - 索引 | 映射 | 文档 | 简单操作的主要内容,如果未能解决你的问题,请参考以下文章
小白学习-ElasticSearch教程 -文档查询之term精确查询
小白学习-ElasticSearch教程 -文档查询之bool查询
小白学习-ElasticSearch教程 -批量操作之bulk | 条件查询 | 其它查询
一文带您了解 Elasticsearch 中,如何进行索引管理(图文教程)