SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作

本文主要介绍一下索引库及文档的一些增删改查操作, 以下都是一些常用的操作, 无需死记硬背, 只需要用到的时候常翻阅即可;
  当然学习索引库和文档的一些基本操作还是要先在虚拟机启动一下 elasticsearch 及 kibana, 启动成功后输入 172.16.xx.xxx:5601 后出现以下界面即启动成功:
SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第1张图片

索引库的操作及文档的操作

  • ⓵ 索引库操作
    • 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 即可; 执行完结果如下:
SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第2张图片

1.3 修改索引库

  这里需要注意, 关于正向索引和倒排索引的概念上一篇文章已经介绍, 点击这里直达; 虽然倒排索引的结构不是很复杂, 但是数据结构只要是创建完成了, 就不要再进行改变了, 如你改变了分词器, 那么就需要重新创建倒排索引, 因此索引库一旦创建, 就无法改变 mapping; 那么如果迫不得已想要改变该怎么办呢???
  虽然不能改变已有的 mapping 中的字段, 但是可以添加新的字段到 mapping 中, 这样也不会出现倒排索引改变引起的后果, 因此修改索引库操作其实就是往 mapping 中添加新的字段;

PUT /fug/_mapping
{
  "properties": {
    "age": {
      "type":"integer"
    }
  }
}

语法说明: PUT /索引库名称/_mapping.

POST /fug/_doc/1001
{
  "info": "今天是个好日子,早起的虫儿有鸟吃",
  "email": "[email protected]",
  "name": {
    "firstName": "想",
    "lastName": "理"
  }
}

SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第3张图片
这时候如果进行查询操作, 则发下已经存在了 age 这个字段;
SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第4张图片

1.4 删除索引库

删除索引库的操作也比较简单, DELETE /fug, 这里不再演示.

1.5 总结

  • 创建索引库: PUT /索引库名;
  • 查询索引库: GET /索引库名;
  • 修改索引库 (添加字段): PUT /索引库名/_mapping;
  • 删除索引库: DELETE /索引库名.

⓶ 文档操作

  索引库已经创建完成, 接下来往里面插入数据;

2.1 新增文档

基本语法: POST /索引库名/_doc/文档id;
SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第5张图片

2.2 查询文档

基本语法: GET /索引库名/_doc/文档id;
SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第6张图片

2.3 删除文档

基本语法: DELETE /索引库名/_doc/文档id;
SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第7张图片

2.4 修改文档

修改文档的方式有两种;

  • 全量修改: 直接覆盖原来的文档; 也就是说根据指定的文档 id 删除文档, 然后再新增一个相同文档 id 的文档; 当然根据文档 id 删除时, 如果不存在, 也是会执行新增操作, 这也就意味着由修改文档变成了新增文档操作了;
  • 增量修改: 修改文档中的部分字段; 也就是说只修改指定文档 id 匹配的文档中的部分字段.

2.4.1 全量修改

基本语法: PUT /索引库名/_doc/文档 id;

PUT /fug/_doc/1
{
  "info": "今天是 2023 年 3 月 2 日",
  "email": "[email protected]",
  "name": {
    "firstName": "想",
    "lastName": "理"
  }
}

SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第8张图片
SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第9张图片

2.4.2 增量修改

基本语法: POST /索引库名/_update/文档 id;

POST /fug/_update/1
{
  "doc": {
    "email": "[email protected]"
  }
}

SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第10张图片
SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作_第11张图片

2.5 总结

  • 创建文档: POST /索引库名/_doc/文档id;
  • 查询文档: GET /索引库名/_doc/文档id;
  • 删除文档: DELETE /索引库名/_doc/文档id;
  • 修改文档
    • 全量修改: PUT /索引库名/_doc/文档id;
    • 增量修改: POST /索引库名/_update/文档id.

你可能感兴趣的:(微服务,SpringCloud,搜索引擎,spring,cloud,分布式,elasticsearch,微服务)