小白学习-ElasticSearch教程 - 索引 | 映射 | 文档 | 简单操作

Posted 做猪呢,最重要的是开森啦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白学习-ElasticSearch教程 - 索引 | 映射 | 文档 | 简单操作相关的知识,希望对你有一定的参考价值。

  • 本系列笔记结合HTTP请求(使用postman调用,源文件见GitHub)和ElasticsearchRestTemplate进行调用学习
  • ElasticsearchRestTemplate封装了RestHighLevelClient,有些场景还得用RestHighLevelClient来操作
  • 版本说明:使用的SpringBoot-2.3.5,对应的ElasticSearch-7.6.2;所以还是可以用RestHighLevelClient
  • ElasticSearch-7.15后就弃用了RestHighLevelClient,可见官网文档,之后的版本可以开启客户端兼容来维持正常使用

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 中,如何进行索引管理(图文教程)

Elasticsearch 6.0 一个索引只允许有一个type

Centos 7安装和配置 ElasticSearch入门小白