elasticSearch的索引库文档的增删改查

我们都知道,elasticsearch在进行搜索引擎的工作时,是会先把数据库中的信息存储一份到elasticsearch中,再去分词查询等之后的工作的。

elasticsearch中的文档数据会被序列化为json格式后存储在elasticsearch中。elasticsearch会对存储的数据进行分类管理,相同类型的放在一起。

索引:相同类型的文档的集合(即同一类型数据的集合)叫索引(这个不是MySQL中的那个索引),为了区分开,我们通常把这的索引叫索引库(对应的mysql数据库中的table表)。

映射:索引中文档的字段约束信息,类似表的结构约束。常见的mapping映射有:

type: 字段数据类型,常见类型有:1、字符串:text(可分词)、keyword(精确值,不可分词,比如品牌名) ; 2、数值: long、integer、short、byte、double、float ;3、布尔:boolean; 4、日期: date; 5、对象: object

index:是否创建索引,默认是true。看看在实际搜索时你会不会根据这个字段进行筛选查询,不会用到,就false。

analyser:分词器,只有text类型才会分词

properties :该字段的子字段,只有object才会用到。

复制代码
#创建索引库并设置mapping映射
PUT /heima
{
  "mappings": {
    "properties": {
      "info":{
        "type": "text"
        , "analyzer": "ik_smart"
      },
      "age":{
        "type": "byte"
      },
      "email":{
        "type": "keyword"
        , "index": false
       },
       "name":{
         "type": "object", 
         "properties": {
           "firstName": {
             "type": "keyword"
           },
           "lastName": {
             "type": "keyword"
           }
         }
       }
    }
  }
}

#查询索引库
GET /heima

#删除索引库
DELETE /heima

这代码意思是我们创建的索引库 名叫 /heima 其中属性用info 、age、email、name(子属性 firstName、lastName);

修该操作有点特殊,不支持对索引库中已有的字段进行修改,但可以新增没有的字段

复制代码
#修改索引库,不支持对已有的索引库做出修改,但可以添加新的字段
PUT /heima/_mapping
{
  "properties":{
    "info":{
      "type":"keyword"
    }
  }
}

下面是对索引库中文档的增删改查:

复制代码
#新增文档 post /索引库名/_doc/文档id
POST /heima/_doc/1
{
  "age":21,
  "email":"****1",
  "info":"黑马程序员Java学习",
  "name":{
    "firstName":"yun",
    "lastName":"zhao"
  }
}

#查询文档
GET /heima/_doc/1


#删除文档
DELETE /heima/_doc/1

同样,修改操作有点特殊,有俩种方式:

复制代码
#方法一:全量修改,会删除旧文档,添加新文档,文档内所有字段都需要写一遍
#如果修改的文档id对应文档不存在,修改操作就会变为新增操作
PUT /heima/_doc/1
{
  "age":21,
  "email":"****2",
  "info":"黑马程序员Java学习",
  "name":{
    "firstName":"yun",
    "lastName":"zhao"
  }
}
#方法二:增量修改,修改指定字段
POST /heima/_update/1
{
  "doc": {
    "email":"*****3"
  }
}

批量处理:同时新增、删除、更新多个数据:

复制代码
#批量处理  index为新增,注意!新增的各个字段必须写在同一行中。
POST /_bulk
{"index":{"_index":"heima","_id":3}}
{"info":"黑马程序员Java学习3","age":23,"email":"****3","name":{"firstName":"wu","lastName":"wang"}}
{"index":{"_index":"heima","_id":4}}
{"info":"黑马程序员Java学习4","age":24,"email":"****4","name":{"firstName":"liu","lastName":"liu"}}

#批量删除  delete为删除
POST /_bulk
{"delete":{"_index":"heima","_id":3}}
{"delete":{"_index":"heima","_id":4}}

#批量更新  update 。 doc中写要更新的字段
POST /_bulk
{"update":{"_id":3,"_index":"heima"}}
{"doc":{"email":"****3.1"}}
{"update":{"_id":4,"_index":"heima"}}
{"doc":{"email":"****4.1"}}
相关推荐
金融小师妹4 小时前
基于AI量化模型的比特币周期重构:传统四年规律是否被算法因子打破?
大数据·人工智能·算法
拓端研究室7 小时前
专题:2025人形机器人与服务机器人技术及市场报告|附130+份报告PDF汇总下载
大数据·人工智能
计算机源启编程7 小时前
大数据毕设选题-基于spark+hadoop技术的北京市医保药品分析与可视化系统的设计与实现
大数据
计算机程序员小杨8 小时前
你知道用Spark处理海洋污染大数据有多震撼吗?这套可视化系统告诉你答案
大数据
蝸牛ちゃん8 小时前
大数据系统架构模式:驾驭海量数据的工程范式
大数据·系统架构
哔哩哔哩技术9 小时前
B站模型训练存储加速实践
大数据
TDengine (老段)9 小时前
TDengine IDMP 基本功能(1.界面布局和操作)
大数据·数据库·物联网·ai·时序数据库·tdengine·涛思数据
bulabulabula9 小时前
基于 Apache Flink CDC 的 PostgreSQL 到 OpenSearch 实时数据同步方案
大数据·postgresql·flink
袋鼠云数栈前端10 小时前
扣子 Coze 产品体验功能
大数据·ai·react
光仔December11 小时前
【Elasticsearch入门到落地】16、RestClient查询文档-快速入门
elasticsearch·全文检索·restclient·highlevelclient·match查询