【ElasticSearch8.X】学习笔记(二)
【ElasticSearch8.X】学习笔记
- 四、基础操作
- 4.1、索引操作
- 4.1.1、创建索引
- 4.1.2、查询指定索引
- 4.1.3、查询所有索引
- 4.1.4、 删除索引
- 4.2、文档操作
- 4.2.1、创建文档
- 4.2.2、查询文档
- 4.2.3、修改文档
- 4.2.4、删除文档
- 4.2.5、查询所有文档
- 4.3、数据搜索
- 4.3.1、匹配查询文档
- 4.3.2、匹配查询字段
- 4.3.3、组合"or"
- 4.3.4、排序
- 4.3.5、分页
- 4.3.6、分组
- 4.3.7、平均值
- 4.3.8、求和
- 4.3.9、TopN
- 五、 索引模板
- 5.1、创建模板
- 5.2、查看模板
- 5.3、验证模板是否存在
- 5.4、 创建索引
- 5.5、删除模板
四、基础操作
在本人blog中ElasticSearch7.x使用postman进行演示过基础操作
因此在ElasticSearch8.x通过Kibana进行演示
4.1、索引操作
4.1.1、创建索引
ES 软件的索引可以类比为 MySQL 中表的概念,创建一个索引,类似于创建一个表
ES 不允许修改索引
# 创建索引
# PUT+索引名
PUT myindex# 增加索引带自定义配置(JSON格式)
PUT test_index
{"aliases": {"test1": {}}
}

4.1.2、查询指定索引
根据索引名称查询指定索引,如果查询到,会返回索引的详细信息
# 查询索引
# GET 索引名称
GET myindex

4.1.3、查询所有索引
这里请求路径中的_cat 表示查看的意思,indices表示索引,所以整体含义就是查看当前 ES 服务器中的所有索引
# 查询索引
GET _cat/indices

4.1.4、 删除索引
删除指定已存在的索引
# 删除索引
# DELETE+索引名称
DELETE test_index

4.2、文档操作
4.2.1、创建文档
这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式
如果在创建数据时,指定唯一性标识,那么请求范式 POST,PUT 都可以
如果没有指定数据唯一性标识,只能使用 POST 请求
# 创建文档
# 创建文档
POST myindex/_doc/001
{"id" : 1001,"name" : "zhangsan","age" : 30
}
POST myindex/_doc/002
{"id" : 1002,"name" : "lisi","age" : 18
}
POST myindex/_doc/003
{"id" : 1004,"name" : "wangwu","age" : 30
}
POST myindex/_doc/004
{"id" : 1004,"name" : "zhaoliu","age" : 35
}

4.2.2、查询文档
根据唯一性标识可以查询对应的文档
# 查询文档
GET myindex/_doc/001

4.2.3、修改文档
修改文档本质上和新增文档是一样的,如果存在就修改,如果不存在就新增
# 修改文档
PUT myindex/_doc/001
{"age":20
}

4.2.4、删除文档
删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)
# 删除文档
DELETE myindex/_doc/001

4.2.5、查询所有文档
# 查询所有文档
GET myindex/_search

4.3、数据搜索
4.3.1、匹配查询文档
这里的查询表示文档数据中 JSON 对象数据中的 name 属性是lisi
GET myindex/_search
{"query": {"match": {"name": "lisi" #不会查出li si 此时查询关键字是lisi 而li si 的关键词是两个【li】【si】匹配不上}}
}GET myindex/_search
{"query": {"term": {"name": {"value": "li si" #会查出li si 不会查出lisi 此时关键字是li si}}}
}

4.3.2、匹配查询字段
默认情况下,Elasticsearch 在搜索的结果中,会把文档中保存在_source 的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加_source 的过滤
GET myindex/_search
{"_source": ["name","age"], "query": {"term": {"name": {"value": "lisi"}}}
}

4.3.3、组合"or"
GET myindex/_search
{"_source": ["name","age"], "query": {"bool": {"should": [{"match": {"name": "lisi"}},{"match": {"age": 35}}]}}
}

4.3.4、排序
GET myindex/_search
{"query": {"match_all": {}},"sort": [{"age": {"order": "desc"}}]
}

4.3.5、分页
GET myindex/_search
{"query": {"match_all": {}},"from": 0,"size": 2
}

4.3.6、分组
GET myindex/_search
{"aggs": {"ageGroup": {"terms": {"field": "age"}}},"size": 0 #只显示分组信息 不显示源信息
}

4.3.7、平均值
GET myindex/_search
{"aggs": {"ageAvg": {"avg": {"field": "age"}}},"size": 0
}

4.3.8、求和
GET myindex/_search
{"aggs": {"ageGroup": {"terms": {"field": "age"},"aggs": {"ageSum": {"sum": {"field": "age"}}}}},"size": 0
}

4.3.9、TopN
GET myindex/_search
{"aggs": {"Top3": {"top_hits": {"sort": [{"age": {"order": "desc"}}], "size": 3}}},"size": 0
}

五、 索引模板
我们之前对索引进行一些配置信息设置,但是都是在单个索引上进行设置。在实际开发中,我们可能需要创建不止一个索引,但是每个索引或多或少都有一些共性。比如我们在设计关系型数据库时,一般都会为每个表结构设计一些常用的字段,比如:创建时间,更新时间,备注信息等。elasticsearch 在创建索引的时候,就引入了模板的概念,你可以先设置一些通用的模板,在创建索引的时候,elasticsearch 会先根据你创建的模板对索引进行设置。
5.1、创建模板
# 模板名称小写
PUT _template/mytemplate
{"index_patterns" : ["my*"],"settings" : {"index" : {"number_of_shards" : "1"}},"mappings" : {"properties" : {"now": {"type" : "date","format" : "yyyy/MM/dd"}}}
}

5.2、查看模板
GET /_template/mytemplate

5.3、验证模板是否存在
HEAD /_template/mytemplate

5.4、 创建索引
在创建索引的时候已经定义匹配的索引了 以my开头
PUT mytest
5.5、删除模板
DELETE /_template/mytemplate
相关文章:
【ElasticSearch8.X】学习笔记(二)
【ElasticSearch8.X】学习笔记四、基础操作4.1、索引操作4.1.1、创建索引4.1.2、查询指定索引4.1.3、查询所有索引4.1.4、 删除索引4.2、文档操作4.2.1、创建文档4.2.2、查询文档4.2.3、修改文档4.2.4、删除文档4.2.5、查询所有文档4.3、数据搜索4.3.1、匹配查询文档4.3.2、匹配…...
Ubuntu22.04安装、配置、美化、软件安装、配置开发环境
Ubuntu22.04安装、配置、美化、软件安装、配置开发环境 一、Ubuntu、Windows11(10)双系统安装 因为ubuntu的安装网上的教程特别多了,所以这里不做赘述,推荐使用小破站这个up主的教程:Windows 和 Ubuntu 双系统从安装到…...
企业电子招投标采购系统之系统的首页设计
功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为…...
Python爬虫-阿里翻译_csrf
前言 本文是该专栏的第37篇,后面会持续分享python爬虫干货知识,记得关注。 笔者在前面有介绍过百度翻译的案例,感兴趣的同学,可往前翻阅查看(JS逆向-百度翻译sign)。而本文,笔者要介绍的是阿里翻译,相对于百度翻译的参数被逆向需要花点时间,阿里相对于易上手。 下面…...
C语言实现三子棋【详解+全部源码】
大家好,我是你们熟悉的恒川 今天我们用C语言来实现三子棋 实现的过程很难,但我们一定要不放弃 三子棋1. 配置运行环境2. 三子棋游戏的初步实现2.1 建立三子棋分布模块2.2 创建一个名为board的二维数组并进行初始化2.3 搭建棋盘3. 接下来该讨论的事情3.1 …...
双指针法将时间复杂度从 O(n^2) 优化到 O(n)
[1] 什么是双指针法 双指针法(Two Pointers)是一种常见的算法技巧,常用于数组和链表等数据结构中。 双指针法的基本思想是维护两个指针,分别指向不同的位置,通过它们的移动来解决问题。在某些情况下,使用双…...
【SpringBoot系列】 Spring中自定义Session管理,Spring Session源码解析
系列文章:Spring Boot学习大纲,可以留言自己想了解的技术点 目录 系列文章:Spring Boot学习大纲,可以留言自己想了解的技术...
【上位机入门常见问题】SQLServer2019 安装指导
SQLServer2019 安装指导 这里要说一下SQLServer的版本问题,首先说纵向的高低版本,如果大家跟我学习,我教给大家的是T-SQL编程的方法,而不是直接操作菜单的方法,所以,我们学习中只要使用SQLServer2012或以上…...
RabbitMQ第一讲
目录 一、RabbitMQ-01 1.1 MQ概述 1.2 MQ的优势和劣势 1.2.1 优势 1.2.2 劣势 1.2.3 MQ应用场景 1.2.4 常用的MQ产品 1.3 RabbitMQ的基本介绍 1.3.1 AMQP介绍 1.3.2 RabbitMQ基础架构 1.3.3 RabbitMQ的6种工作模式 编辑 1.4 AMQP和JMS 1.4.1 AMQP 1.4.2 JMS …...
华为机试题:HJ100 等差数列(python)
文章目录(1)题目描述(2)Python3实现(3)知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…...
数据推荐 | 人体行为识别数据集
人体行为识别任务旨在通过对人体姿态进行分析,识别出人体的具体动作,为人体行为预测、突发事件处理、智能健身、智能看护等领域提供技术支持。 图片 图片 人体行为识别数据标注方式 人体行为数据通用的标注方式包括人体关键点标注和动作标签标注&#…...
667真题分析 | 2023年667真题简要分析和答题思路参考
2023年667真题简要分析和答题思路参考 文章目录 2023年667真题简要分析和答题思路参考前言1. 名词解释2. 简答题3. 分析题3.1 答题框架(套路)3.2 答题框架实战3.2.1 图书情报档案事业如何在文化自信、文化强国中发挥自己的地位和作用3.2.2 高校图书馆如何发挥空间资源的功能和…...
配置 Docker 使用 GPU
准备工作 首先你需要准备一台拥有GPU的实例,在这里我将使用阿里云的竞价实例来做演示,因为它对于短期使用GPU更加划算。 注意,本篇文章将教你手动进行GPU驱动的配置,所以在购买时选择系统的时候不要选择自动安装GPU驱动。 具体关…...
「并发编程实战」常见的限流方案
「并发编程实战」常见的限流方案 文章目录「并发编程实战」常见的限流方案一、概述二、计数器限流方案三、时间窗口限流方案四、令牌桶限流方案五、漏桶限流方案六、高并发限流算法小结文章参考: 追忆四年前:一段关于我被外企CTO用登录注册吊打的不堪往事…...
IO 复习
IO 把电脑硬盘中的数据读到程序中,称为输入,进行数据的read操作 把程序往外部设备写数据,称为输出,进行数据的write操作 File类 一个File对象可以表示计算机硬盘上的一个文件或目录(文件夹) 可以获取文件信息,创建文件,删除文件 但是不能对文件中的数据进行读写操作 一些…...
什么是项目管理
项目管理(简称PM),就是将知识、技能、工具与技术应用于项目活动,以满足项目的要求。项目管理通过合理运用与整合特定项目所需的项目管理过程得以实现。项目管理使组织能够有效且高效地开展项目 “现代管理,项目就是一切…...
什么是入站营销?如何向合适的受众推销
没有什么比入站营销更有效地优先考虑客户体验了。 入站营销可为您的客户在他们需要的时间和地点准确提供他们想要的东西。它以最有机的方式在您的行业中建立信任、忠诚和权威。 什么是入站营销? 入站营销是一种商业方法,可提供优质内容和量身定制的客户…...
Qt 崩溃 corrupted double-linked list Aborted
文章目录摘要1 使用全局静态变量2 不取第一个和最后一个数3 将数据计算放到同一线程计算4 替换槽函数5 修改传值为const6 神奇的环境因素7 更神奇的板子差异8 另一个细节Aborted最后关键字: Qt、 Aborted、 corrupted、 double、 linked 摘要 额,结论&…...
牛逼了!这是什么神仙面试宝典?半月看完25大专题,居然斩获阿里P7offer
这是什么神仙面试宝典?半月看完25大专题,居然斩获阿里P7offer???????容我小小的嘚瑟一下下啦~~这份神仙面试宝典总共有25大专题:专题一:JavaOOP面…...
单链表详解
单链表一.概念二.一些类型的创建三.尾插四.头插五.头删尾删六.打印链表七.单链表查找,任意位置插入,任意位置删除八.源代码一.概念 该篇链表博客是按照工程项目的格式来记录的,与平常的算法链表有些许不同,注意区分。 二.一些类型的创建 三.尾…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
