第三节:基于DevTools的索引库操作和文档操作详解

一. 索引库操作

(Index就类似数据库表,Mapping映射就类似表的结构。我们要向es中存储数据,必须先创建Index和Mapping)

1.创建索引和映射

(1) 基本语法

  • 请求方式:PUT

  • 请求路径:/索引库名,可以自定义

  • 请求参数:mapping映射

(2) 格式

PUT /索引库名称
{
  "mappings": {
    "properties": {
      "字段名":{
        "type": "text",
        "analyzer": "ik_smart"
      },
      "字段名2":{
        "type": "keyword",
        "index": "false"
      },
      "字段名3":{
        "properties": {
          "子字段": {
            "type": "keyword"
          }
        }
      },
    }
  }
}

(3) 样例

PUT /user
{
  "mappings": {
    "properties": {
      "info":{
        "type": "text",
        "analyzer": "ik_smart"
      },
      "email":{
        "type": "keyword",
        "index": false
      },
      "name":{
        "properties": {
          "firstName":{
            "type": "keyword"
          },
          "lastName":{
            "type": "keyword"
          }
        }
      }
    }
  }
}

 

2 查询索引库

(1) 基本语法

  • 请求方式:GET

  • 请求路径:/索引库名

  • 请求参数:无

(2) 格式

GET /索引库名

(3) 样例

GET /user

 

3 修改索引库

(1) 基本语法

  倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引,这简直是灾难。因此索引库一旦创建,无法修改mapping

  虽然无法修改mapping中已有的字段,但是却允许添加新的字段到mapping中,因为不会对倒排索引产生影响。因此修改索引库能做的就是向索引库中添加新字段,或者更新索引库的基础属性。

(2) 格式

PUT /索引库名/_mapping
{
  "properties": {
    "新字段名":{
      "type": "integer"
    }
  }
}

(3) 样例

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

 

4 删除索引库

(1) 基本语法

  • 请求方式:DELETE

  • 请求路径:/索引库名

  • 请求参数:无

(2) 格式

DELETE /索引库名

(3) 样例

DELETE /user

 

 

二. 文档操作

1 新增文档

(1) 语法

POST /索引库名/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    "字段3": {
        "子属性1": "值3",
        "子属性2": "值4"
    },
}

(2) 样例

事先创建索引

PUT /user
{
  "mappings": {
    "properties": {
      "info":{
        "type": "text",
        "analyzer": "ik_smart"
      },
      "email":{
        "type": "keyword",
        "index": false
      },
      "name":{
        "properties": {
          "firstName":{
            "type": "keyword"
          },
          "lastName":{
            "type": "keyword"
          }
        }
      }
    }
  }
}

新增文档  

POST /user/_doc/1
{
    "info": "青岛欢迎您",
    "email": "ypf@qq.cn",
    "name": {
        "firstName": "云",
        "lastName": "赵"
    }
}

 

2 查询文档

(1) 语法

GET /{索引库名称}/_doc/{id}

(2) 样例 

GET /user/_doc/1

3 删除文档

(1) 语法

  删除使用DELETE请求,同样,需要根据id进行删除:

DELETE /{索引库名}/_doc/id值

(2) 样例 

DELETE /user/_doc/1

 

4 修改文档

修改有两种方式:

  • 全量修改:直接覆盖原来的文档

  • 局部修改:修改文档中的部分字段

4.1 全量修改

(1) 语法

PUT /{索引库名}/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    // ... 略
}

(2) 样例 

PUT /user/_doc/1
{
    "info": "山东欢迎你",
    "email": "zs@qq.cn",
    "name": {
        "firstName": "三",
        "lastName": "张"
    }
}

 

4.2 局部修改

(1) 语法

POST /{索引库名}/_update/文档id
{
    "doc": {
         "字段名": "新的值",
    }
}

(2) 样例

POST /user/_update/1
{
  "doc":{
    "email":"hh@test.cn"
  }
}

 

5 批处理

(1) 语法

POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }

PS:

  • index代表新增操作

    • _index:指定索引库名

    • _id指定要操作的文档id

    • { "field1" : "value1" }:则是要新增的文档内容

  • delete代表删除操作

    • _index:指定索引库名

    • _id指定要操作的文档id

  • update代表更新操作

    • _index:指定索引库名

    • _id指定要操作的文档id

    • { "doc" : {"field2" : "value2"} }:要更新的文档字段

注意:index 之后的数据要写在一行

(2) 样例-批量新增

POST /_bulk
{"index":{"_index":"user", "_id":3}}
{"info":"test11111", "email":"ww@hh.cn","name":{"firstName":"王", "lastName":"五"}}
{"index":{"_index":"user", "_id":4}}
{"info":"test77777", "email":"zs@hh.cn","name":{"firstName":"张", "lastName":"三"}}

 

(2) 样例-批量删除

POST /_bulk
{"delete":{"_index":"user", "_id":3}}
{"delete":{"_index":"user", "_id":4}}

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 
posted @ 2025-07-12 11:41  Yaopengfei  阅读(35)  评论(1)    收藏  举报