【ES笔记01】ElasticSearch数据库之index索引、doc文档、alias别名、mappings映射结构的基本操作
创始人
2024-02-13 16:15:10
0

这篇文章,主要介绍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映射结构的基本操作。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...