当前位置: 首页 > news >正文

【Elasticsearch入门到落地】6、索引库的操作

接上篇《5、安装IK分词器》
上一篇我们进行了IK分词器的安装与测试,本篇我们来学习ElasticSearch的索引库的操作,学习mapping映射属性以及CRUD操作。

一、前情回顾

我们在前几篇学习了ElasticSearch的基本概念,并动手搭建了ElasticSearch环境,从本篇开始我们就实际来学习ElasticSearch的实操。

我们知道在ElasticSearch中有“索引库”的概念,这个概念就像数据库中的“表”,而索引库中有很多的文档,就类似于数据库中一行一行的数据。那我们应该知道,数据库是先创建表然后再添加数据,那ElasticSearch也是一样,需要现有索引库,然后才能在里面添加文档。所以我们的学习顺序也是先学习索引库的操作,后面再学习文档的操作。

创建一个索引库就像建表一样,你的语句是需要指定一个Schema的,即对字段的一些约束。那么索引库也是要指定相应的mapping映射,这个mapping映射就是对文档的约束。我们来学习一下mapping映射的约束和数据库的约束有什么差别,然后再动手实践索引库的增删改查(即CRUD操作)。

二、mapping映射

1、mapping属性

mapping是对索引库中文档的约束,我们打开ES的官网,可以看到在“mapping参数”一栏,有很多的mapping属性,我们可以根据需要一个个的学习:

地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html
我们这里只讲解比较核心的mapping属性,常见的mapping属性包括:
(1)type:字段数据类型,常见的简单类型有:
●字符串:text(可分词的文本)、keyword(精确值,例如国家、品牌、IP地址)
●数值:long、integer、short、byte、double、float
●布尔:boolean
●日期:date
●对象:object
(2)index:是否创建索引,默认为true
(3)analyzer:使用哪种分词器(与上面的text可分词文本结合)。
(4)properties:该字段的子字段
其他的属性大家可以参考官方文档了解。

三、创建索引库

ES中通过Restful请求操作索引库、文档。请求内容用DSL语句(Domain Specific Language,领域特定语言)来表示。创建索引库和mapping的DSL语法如下:

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


下面是一个真实的代码示例:

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

上述代码用来定义一个名为heima的索引(Index),并指定了该索引中文档的字段映射(Mappings)。字段映射定义了文档中各个字段的数据类型、索引方式、分词器等属性。下面是对这段DSL的详细解读:

1、创建索引:

PUT /heima:这个命令用于创建一个名为heima的索引。如果索引已经存在,这个命令会尝试更新它的设置和映射(取决于Elasticsearch的版本和配置)。

2、映射定义:

"mappings":{...}:这一部分定义了索引中文档的字段映射。字段映射指定了文档中每个字段的属性。

3、字段属性:

(1)"info":{...}:定义了名为info的字段。
●"type": "text":指定字段类型为text,这意味着该字段的内容会被全文索引,适用于全文搜索。
●"analyzer":"ik_smart":指定使用ik_smart分词器。ik_smart是IK Analyzer插件提供的一种中文分词器,它会对中文文本进行智能分词,适合需要精确匹配的搜索场景。
(2)"email":{...}:定义了名为email的字段。
●"type" :"keyword":指定字段类型为keyword,适用于精确值搜索(如过滤、排序和聚合)。
●"index":"false":设置该字段不被索引。这意味着该字段的内容不会被存储到倒排索引中,因此无法通过该字段进行搜索。这通常用于那些只需要在查询结果中显示,但不需要搜索的字段。
(3)"name":{...}:定义了名为name的复合字段,这里它是一个对象类型。
●"properties":{...}:在对象类型中,通过properties关键字定义对象内部的字段。
●"firstName":{...}:定义了name对象内部的firstName字段。
●"type":"keyword":指定字段类型为keyword,适用于需要精确匹配的搜索场景。

我们打开Kibana图形化界面,打开Dev Tools,来编写一段创建索引库的DSL:

点击右边的执行按钮,就算是创建索引库成功了。

四、索引库的增删改查

1、查看索引库

语法:

GET /索引库名

示例:

GET /heima

2、删除索引库

语法:

DELETE /索引库名

示例:

DELETE /heima

3、修改索引库

索引库和mapping一旦创建无法修改,但是可以添加新的字段,语法如下

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

示例:

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

4、演示

(1)查询heima索引库


这个查询ElasticSearch中heima索引库的结果提供了关于该索引的详细信息,包括别名(aliases)、映射(mappings)、以及设置(settings)。下面是对这些信息的简要解释:
●别名(Aliases):
"aliases" : { }:表示该索引没有定义任何别名。别名可以用于在不改变索引实际名称的情况下,对索引进行引用或操作。
●映射(Mappings):
映射部分定义了索引中文档的字段及其属性。
"email"字段:类型为keyword,且不被索引("index" : false),这意味着不能通过该字段进行搜索,但可以在返回结果中显示。
"info"字段:类型为text,使用ik_smart分词器进行全文索引,适用于全文搜索。
"name"字段:是一个复合字段(对象类型),包含firstName和lastName两个子字段,它们都是keyword类型,适用于精确匹配搜索。
●设置(Settings):
设置部分包含了索引的配置信息。
"number_of_shards" : "1":表示索引被分割成一个分片。分片是Elasticsearch分布式存储和搜索的基本单位。
"number_of_replicas" : "1":表示每个分片有一个副本。副本用于提高数据的可用性和搜索性能。
"routing" : { ... }:路由设置,这里指定了数据分配时的偏好设置("_tier_preference" : "data_content"),这通常与Elasticsearch的数据层(tier)配置相关,用于优化数据存储和访问。
"creation_date" : "1737254104241":索引的创建时间戳。
"uuid" : "9YJoz4P4Tg6K7eQ0fD3MQw":索引的唯一标识符。
"version" : { "created" : "7120199" }:索引创建时的Elasticsearch版本号。
总结来说,这个查询结果提供了heima索引的完整配置信息,包括字段映射、分片数量、副本数量、路由设置、创建时间、唯一标识符和创建时的Elasticsearch版本号。这些信息对于理解索引的结构和行为,以及进行索引管理和优化非常有用。

(2)修改heima索引库

给heima数据库添加age属性:

此时再查看索引库,就可以看到新加的属性:

如果此时我们重复添加age属性(即使把type改为long也不行),就会报错:

索引库是不能修改的。

(3)删除heima索引库

运行删除语法:

运行完毕后,再次查询heima索引库,发现没有了:

删除成功。

至此,关于ElasticSearch的索引库的操作就讲解完毕了。下一篇我们来学习文档的操作。

参考:《黑马Elasticsearch全套教程》
转载请注明出处:https://blog.csdn.net/acmman/article/details/145240260

相关文章:

【Elasticsearch入门到落地】6、索引库的操作

接上篇《5、安装IK分词器》 上一篇我们进行了IK分词器的安装与测试,本篇我们来学习ElasticSearch的索引库的操作,学习mapping映射属性以及CRUD操作。 一、前情回顾 我们在前几篇学习了ElasticSearch的基本概念,并动手搭建了ElasticSearch环…...

Java TCP可靠传输(1)

TCP 可靠传输 一. 确认应答 由发送方填充,再由接收方在序号的基础上1,填充到确认序号中,来表示已经接收到前面发送的,表明下一个从哪个位置发送。 二. 超时重传 数据在网络上传输时会经过很多网络设备,如果其中一个…...

ipad和macbook同步zotero文献附件失败的解决办法

背景:我所有的文献及其附件pdf都是在台式机(windows系统),想要把这些文献同步到云上,然后再从云上同步到平板和其他笔记本电脑比如macbook。文献同步虽已成功,但文献附件都无法打开。 平板报错如下&#xf…...

linux-ubuntu学习笔记碎记

~指/home/user_name这个目录 查看软件安装目录:whereis vim 查看当前路径:pwd 终端中键入ctrls会挂起终端,即终端不响应键鼠;ctrlq可以恢复。 和虚拟机开启共享文件夹互传文件 点击桌面,按ctrlaltt,开…...

RV1126+FFMPEG推流项目(11)编码音视频数据 + FFMPEG时间戳处理

本节介绍本章节主要讲解的是push_server_thread线程的具体处理流程, push_server_thread这个线程的主要功能是通过时间戳比较,来处理音频、视频的数据并最终推流到SRT、RTMP、UDP、RTSP服务器 push_server_thread:流程如下 上图,…...

人工智能的出现,给生命科学领域的研究带来全新的视角|行业前沿·25-01-22

小罗碎碎念 今天和大家分享一份白皮书,系统总结并陈述人工智能在生命科学领域的应用。 人工智能在生命科学领域的应用,具体包括——单细胞转录组、疾病诊疗、医疗文本处理、RNA结构预测等多个方面,通过这份报告,我们可以详细了解相…...

python注释格式总结

三个双引号的用于文件,类,函数注释。 没有统一的规定,以下是比较清晰的写法。 文件注释(文件顶部):文件用途空行作者信息(每行一个键:值) 类注释(类名下行&#xff09…...

Django实现数据库的表间三种关系

Django实现数据库的表间三种关系 1. 一对多(One-to-Many)关系示例:关系说明:查询示例: 2. 一对一(One-to-One)关系示例:关系说明:查询示例: 3. 多对多&#x…...

C++蓝桥真题讲解

本篇文章和大家一起来试试一些简单的蓝桥真题 注意:本篇文章将全程使用devc和蓝桥官网,如果有小伙伴找不到devc安装包的可以本篇文章中下载。 赛前必知点 1.正式比赛时,先从蓝桥官网下载题目文档,然后用devc进行编译&#xff0c…...

【21】Word:德国旅游业务❗

目录 题目 NO1.2.3 NO4 NO5.6 NO7 NO8.9.10.11 题目 NO1.2.3 F12:另存为布局→页面设置→页边距:上下左右选中“德国主要城市”→开始→字体对话框→字体/字号→文本效果:段落对话框→对齐方式/字符间距/段落间距 NO4 布局→表对话框…...

如何分辨ddos攻击和cc攻击?

DDoS(分布式拒绝服务)攻击和 CC(Challenge Collapsar)攻击都属于网络攻击手段,主要通过消耗目标服务器资源使其无法正常提供服务,但它们在攻击原理、攻击特征等方面存在区别: 攻击原理 DDoS 攻…...

enum EPOLL_EVENTS详解

enum EPOLL_EVENTS 是 Linux 中 epoll 机制的核心定义之一,它定义了 epoll 支持的所有事件类型。每个事件类型对应一个唯一的位掩码(bitmask),通过按位或(|)可以组合多个事件类型,通过按位与&am…...

阿里前端开发规范

文章目录 1. 为什么前端写代码要规范?一、代码规范的必要性二、 规范带来的好处 2. 资源一、推荐 1. 为什么前端写代码要规范? 一、代码规范的必要性 可维护性 统一的代码风格便于理解和修改减少代码维护成本降低项目交接难度 团队协作 提高团队开发效…...

从函数式编程到响应式编程:现代开发中的范式转变

引言 随着软件开发领域的不断进化,编程范式也在经历着一场又一场的变革。从面向过程到面向对象,再到近年来流行的函数式编程和响应式编程,开发者正逐步适应不同的编程思想来解决现代软件开发中的复杂问题。本文将带你了解函数式编程和响应式编…...

Django学习笔记(启动项目)-03

Django学习笔记(启动项目)-03 1、在urls文件中配置一个路由url 2、在views文件中创建视图函数 3、启动项目测试结果 # 输入项目启动命令 python manage.py runserver4、创建HTML模版和静态文件 1、在templates文件夹中创建一个html 2、创建url路由与视图函数 3、测试效果 4、…...

量变引起质变

量变引起质变,这个是最本质的规律,重复进行一件事情,这件事情就会越来越完善,越来越完美,哪怕是菜鸟,重复多了就是大佬。 我从说话结结巴巴,到说话流畅,只是用了15天直播写代码&…...

NewStar CTF week1 web wp

谢谢皮蛋 做这题之前需要先去学习一些数据库的知识 1 order by 2 1可以理解为输入的id,是一个占位符,按第二列排序用来测试列数,如果没有两列则会报错-1 union select 1,2 -1同样是占位符,union的作用是将注入语句合并到原始语句…...

李沐vscode配置+github管理+FFmpeg视频搬运+百度API添加翻译字幕

终端输入nvidia-smi查看cuda版本 我的是12.5,在网上没有找到12.5的torch,就安装12.1的。torch,torchvision,torchaudio版本以及python版本要对应 参考:https://blog.csdn.net/FengHanI/article/details/135116114 创…...

深度学习中Batch Normalization(BN)原理、作用浅析

最近做剪枝学习,其中一种是基于BN层的γ作为缩放因子进行剪枝的,那么我想搞懂BN的工作原理更好的理解网络、剪枝等,所以有了该文。 首先先说BN的作用在详细拆解,理解。以知乎一条高赞评论说明BN层到底在干什么。 Batch Norm 为什…...

C语言常用字符串处理函数

头文件&#xff1a;#include <string.h> strlen size_t strlen( char *str ); 功能&#xff1a;函数返回一个整数值&#xff0c;表示给定字符串的长度&#xff08;不包括结束符\0&#xff09; strcat char *strcat( char *str1, const char *str2 )&#xff1b; 功能&a…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...