【ES笔记01】ElasticSearch数据库之index索引、doc文档、alias别名、mappings映射结构的基本操作

news2025/8/11 14:05:48

这篇文章,主要介绍ElasticSearch数据库之index索引、doc文档、alias别名、mappings映射结构的基本操作。

目录

一、索引index相关操作

1.1、创建索引

1.2、查询索引

1.3、查询所有索引

1.4、删除索引

二、文档doc相关操作

2.1、创建文档

2.2、更新文档

(1)全量更新

(2)增量更新

2.3、删除文档

2.4、查询文档

三、别名alias相关操作

3.1、查询别名

3.2、添加别名

(1)第一种方式

(2)第二种方式

3.3、删除别名

(1)第一种方式

(2)第二种方式

3.4、重命名别名

四、映射mapping相关操作

4.1、查询mapping结构

4.2、创建mapping映射


ElasticSearch,简称:ES,是一个分布式的分析和搜索引擎,底层是基于开源框架Lucene实现的,对外提供了一组Restful风格的API用于操作ES数据库。ES是一个非关系型数据库,它采用JSON文档的格式保存数据,并且可以对JSON中的每一个字段进行索引,从而实现快速搜索功能。ES中的一些概念可以类比成关系型数据库中的一些概念,大致如下图所示:

一、索引index相关操作

ES提供的API是基于Restful风格,所以我们可以使用Postman、Kibana、curl等工具或命令执行相关的请求,这篇文章将采用【ES 7.13.0】和【Kibana 7.13.0】工具执行ES相关操作命令。

1.1、创建索引

# 创建索引
PUT /索引名称

# 案例
PUT /idx_20221124

执行结果:

1.2、查询索引

# 查询索引
GET /索引名称

# 案例
GET /idx_20221124

执行结果:

1.3、查询所有索引

# 查询所有索引
GET /_cat/indices?v

注意:【v】表示显示表头信息。

执行结果:

1.4、删除索引

# 删除索引
DELETE /索引名称

# 案例
DELETE /idx_20221124

执行结果:

二、文档doc相关操作

  • ES 5.x版本,支持一个index索引下面,哪个创建多个type类型(相当于一个数据库下面允许创建多张数据表)。
  • ES 6.x版本,只允许一个index索引下面,最多创建一个type类型。
  • ES 7.x版本开始,就已经不推荐使用type类型,index索引下面不要创建type类型,ES默认会使用一个【_doc】的type类型。

2.1、创建文档

每一个doc文档都有一个文档ID,相当于主键,用于唯一标识一条数据记录,文档id可以自己定义,也可以不指定,如果没有指定文档id,那么ES会随机生成一个文档id。

注意:创建文档的时候,如果index索引不存在,那么创建文档的时候会首先创建索引,然后再将数据添加到ES里面。

# 创建文档
POST /索引名称/_doc/doc文档id
{
    // 请求体,需要保存的JSON文档数据
}

# 测试案例
POST /idx_20221124/_doc/2022002
{
  "username": "test-name-csdn",
  "nickname": "niick-name-csdn",
  "age": 20
}

执行结果:

2.2、更新文档

(1)全量更新

更新文档和创建文档是一致的,修改JSON格式的请求体内容,ES就会更新相应的字段数据。下面这种更新文档的方式,将会覆盖JSON文档所有字段。

# 更新文档
POST /索引名称/_doc/doc文档id
{
    // 请求体,需要保存的JSON文档数据
}

# 测试案例
POST /idx_20221124/_doc/2022002
{
  "username": "test-name-csdn001",
  "nickname": "niick-name-csdn",
  "age": 20
}

执行结果:

(2)增量更新

第一种更新文档的方式是全量覆盖JSON字段,如果不想这么更新,可以采用增量更新的方式,只更新指定的JSON字段。

# 增量更新文档
POST /索引名称/_doc/doc文档id/_update
{
    "doc": {
        // 需要更新的JSON字段
    }
}

# 测试案例
POST /idx_20221124/_doc/2022001/_update
{
  "doc": {
    "username" : "test-name-csdn002"
  }
}

执行结果:

2.3、删除文档

# 删除文档
DELETE /索引名称/_doc/doc文档id

# 测试案例
DELETE /idx_20221124/_doc/2022002

执行结果:

2.4、查询文档

# 查询指定文档
GET /索引名称/_doc/doc文档id

# 测试案例
GET /idx_20221124/_doc/2022001

执行结果:

三、别名alias相关操作

ES中允许为索引添加别名,当一个index索引设置别名alias之后,我们就可以通过别名alias来操作ES数据,就和直接使用索引名称是一样的效果,一个index索引可以设置多个别名alias。

3.1、查询别名

# 查询别名
GET /索引名称/_alias

# 案例
GET /idx_20221124/_alias

执行结果:

3.2、添加别名

ES默认情况下,为index索引添加别名alias之后,通过这个别名只能够对索引中的数据进行查询操作,不能够进行增删改操作,如果需要通过别名对index索引数据进行增删改操作,那么在设置别名的时候需要添加【is_write_index=true】属性值。

(1)第一种方式

# 设置别名
POST /索引名称/_alias/自定义的索引别名

# 测试案例
POST /idx_20221124/_alias/idx_20221124_bak

执行结果:

(2)第二种方式

# 设置别名
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "索引名称",
        "alias": "索引别名名称,可以是多个,多个使用数组表示",
        "is_write_index": true // 索引别名是否可写,即:是否可以通过索引别名进行增删改操作
      }
    }
  ]
}

# 测试案例
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "idx_20221124",
        "alias": "idx_20221124_bak02",
        "is_write_index": true
      }
    }
  ]
}

执行结果:

3.3、删除别名

(1)第一种方式

# 删除别名
DELETE /索引名称/_alias/需要删除的索引别名

# 测试案例
DELETE /idx_20221124/_alias/idx_20221124_bak

执行结果:

(2)第二种方式

# 删除别名
POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "idx_20221124",
        "alias": "idx_20221124_bak02"
      }
    }
  ]
}

执行结果:

3.4、重命名别名

ES中重命名索引别名,是通过先删除后创建来实现的。

# 重命名别名
POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "idx_20221124",
        "alias": "idx_20221124_bak01"
      }
    },
    {
      "add": { 
        "index": "idx_20221124",
        "alias": "idx_20221124_bak02"
      }
    }
  ]
}

四、映射mapping相关操作

ES中的mapping,就相当于关系型数据库中的表字段结构,mapping主要用于定义JSON文档中的每一个字段的数据类型,ES中常见的几种数据类型如下所示:

请求体中的数据类型有如下几种:

  • 字符串类型:text、keyword

  • 数值类型:long、integer、short、byte、double、float、half float、scaled float

  • 日期类型:date

  • 布尔类型:boolean

  • 二进制类型:binary

4.1、查询mapping结构

当我们创建索引的时候,如果没有指定mapping结构,那么当第一次向ES数据库中添加doc文档的时候,ES会默认根据JSON中的每个字段类型,设置默认的mapping结构。

注意:字符串类型,默认采用text,数值类型默认采用long类型。

# 查询mapping结构
GET /索引名称/_mapping

# 测试案例
GET /idx_20221124/_mapping

执行结果:

4.2、创建mapping映射

ES中mapping映射结构,需要在创建index索引的时候一起创建,如果索引已经创建了,并且已经存在doc文档,那么ES是不允许修改mapping结构的。为什么呢???因为ES是会对doc文档的数据字段进行索引,索引之后就可以进行快速查询,如果我们修改了mapping结构,那么就相当于需要对doc文档数据重新进行索引,所以ES不允许直接修改mapping结构。

# 添加mapping结构
PUT /idx_20221124
{
  "mappings": {
    "properties": {
      "username": {
        "type": "keyword"
      },
      "nickname": {
        "type": "keyword"
      },
      "age": {
        "type": "integer"
      }
    }
  }
}

执行结果:

到此,mapping结构创建完成了,之后向这个index索引里面添加数据的时候,对应的doc文档数据类型都会是mapping指定的类型。

综上,这篇文章结束了,主要介绍ElasticSearch数据库之index索引、doc文档、alias别名、mappings映射结构的基本操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/33792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于JSP的敬老院信息管理系统【数据库设计、源码、开题报告】

数据库脚本下载地址: https://download.csdn.net/download/itrjxxs_com/86467170 主要使用技术 ServletJSPCSSJSMysql 功能介绍 系统管理员用户功能介绍: 密码信息管理:修改个人账号密码; 系统用户管理:可以对系统…

【爬虫进阶】易班登录加密逆向

目录前言分析代码过程結果完整代码前言 demo比较简单,逆向难点:rsa加密,图片验证码 分析 我们模拟登录,请求一下 红框内是我们提交的参数,password看上去应该是rsa加密,captcha是验证码,key…

GO面试一定要看看这些面试题

Go核心特性 1.goroutine 协程是用户态轻量级线程,它是线程调度的基本单位。 使用者分配足够多的任务,系统能自动帮助使用者把任务分配到 CPU 上,让这些任务尽量并发运作。这种机制在 Go语言中被称为 goroutine(协程&#xff09…

【javaEE】网络原理(网络层)

努力经营当下,直至未来明朗 文章目录前言一、网络层简述【IP协议】THINK前言 一个人最大的痛苦来源于对自己无能的愤怒 Hi,这里是不想秃头的宝贝儿! 本文主要介绍【网络层】,其中最关键的就是【IP协议】。(同样&…

【天池竞赛】心跳数据挖掘

天池学习赛 心跳数据挖掘 168分攻略 Chapter 1. 赛题解析 就如比赛界面所介绍的一般,这里再复述一遍 本次新人赛是Datawhale与天池联合发起的0基础入门系列赛事 —— 心跳信号分类预测。赛题以心电图心跳信号数据为背景,要求选手根据心电图感应数据预测…

【序列召回推荐】(task4)多兴趣召回实践:MIND(更新中)

note 阿里的序列召回MIND模型:引入了胶囊网络,将胶囊网络的动态路由算法引入到了用户的多兴趣建模上,通过B2I动态路由很好的从用户的原始行为序列中提取出用户的多种兴趣表征。在离线训练阶段,通过提出Label-Aware Attention详细…

Lifecycle 生命周期组件的那些事

引言 在2022的今天,AndroidX 普遍的情况下,JetPack Lifecycle 也早已经成为了开发中的基础设施,小到 View(扩展库) ,大到 Activity,都隐藏着它的身影,而了解 Lifecycle 也正是理解 JetPack 组件系列库生命感知设计的基…

D-013 蜂鸣器硬件电路设计

蜂鸣器硬件电路设计1 简介2 蜂鸣器电路设计1 简介 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中做发声器件。 蜂鸣器的分类:压电…

【ASM】字节码操作 工具类与常用类 AnalyzerAdapter初步介绍

文章目录 1.概述1.1 第一句话1.2 第二句话2. AnalyzerAdapter2.1 class info2.2 fields2.3 constructors2.4 methods2.4.1 execute方法2.4.2 return和throw2.4.3 jump2.4.4 visitFrame方法2.4.5 new和invokespecial1.概述 在上一篇文章:

创建KVM虚拟机公共镜像

手动配置kvm教程: https://blog.csdn.net/nvd11/article/details/127435990 但是毕竟每次创建新的虚拟机时,还要装一次系统比较麻烦。 打算做个公共的ubuntu镜像出来。 目标: NoDESCcpu数内存第一步创建虚拟机vm128g第二步创建虚拟机镜像文…

第五章《类的继承》第1节:继承的概念与实现方式

继承是面向对象最显著的一个特性,它是以已存在的类为基础定义新类的技术,新的类可以继承已有类的属性和方法,也可以增加新的类成员。 5.1.1什么是继承 在现实生活中,一类事物往往都可以划分成更小的类别。例如:“人”就是一类事物,按照人的身份和职业,可以把人划分成学…

SSTV慢速扫描的几种模式优劣对比

下面使用的图片是我自己拍摄的照片,无版权问题 原图: 扫描环境: 家中客厅,窗户打开,窗外有鸟叫和人声.模拟了介于野外和户外之间的环境 ,两部设备相隔1厘米,音量35%,所有测试下来设备未移动. Martin1 模式 : 扫描时长: 1分55秒 扫描后图片 Martin2 模式 : 扫描时长: 58秒…

Pywinauto的安装及使用

目录 1.pywinauto简单介绍 2.pywinauto的安装 3. 通过启动windows自带记事本,检查是否可正常使用 1.pywinauto简单介绍 pywinauto是一组用于自动化测试脚本的python模块,用于自动化Microsoft Windows GUI。它允许将鼠标和键盘操作发送到windows对话框…

基于JSP的企业固定资产管理系统【数据库设计、源码、开题报告】

数据库脚本下载地址: https://download.csdn.net/download/itrjxxs_com/86466989 主要使用技术 SpringStruts2HibernateJSPCSSJSMysql 功能介绍 固定资产管理系统是对高校固定资产的一个信息化管理系统,基本功能包括: 对固定资产的购进、…

基于遥感和GIS技术的生态承载力评价的解决方案

生态承载力的概念最早来自于生态学。1921年,Park和Burgess在生态学领域中首次应用了生态承载力的概念,即在某一特定环境条件下(主要指生存空间、营养物质、阳光等生态因子的组合),某种个体存在数量的最高极限。生态承载…

2023-2028年中国化肥行业市场需求预测与投资趋势分析报告

本报告由锐观咨询重磅推出,对中国化肥行业的发展现状、竞争格局及市场供需形势进行了具体分析,并从行业的政策环境、经济环境、社会环境及技术环境等方面分析行业面临的机遇及挑战。还重点分析了重点企业的经营现状及发展格局,并对未来几年行…

m分集2跳OFDM系统中基于功率分配和子载波配对算法的信道容量matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 随着当代无线通信事业的迅猛发展,无线频谱资源已显得越来越匮乏,传统固定静态的无线频谱分配模式和策略,很难为未来的无线通信事业的进一步发展提供更多可利用的无线频谱带宽和更高的频谱…

源码分析 Laravel 重复执行同一个队列任务的原因

发现问题 在 Laravel 中使用 Redis 处理队列任务,框架提供的功能非常强大,但是最近遇到一个问题,就是发现一个任务被多次执行,这是为什么呢? 先说原因: 因为在 Laravel 中如果一个队列(任务&a…

Java项目:JSP民宿预订网站信息管理平台

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为前后台,包括管理员与普通用户两种角色; 管理员角色包含以下功能: 管理员登录,用户管理,会员管理,…

高斯消元总结

A-Matrix Equation_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)(重现赛) 自己写一个2维矩阵或者3维矩阵就可以发现对于每一列来说都是独立的,每一列的n个Cij都是都关系的&#xff0c…