【Elasticsearch】数据简单操作(二)
简介:Elasticsearch(ES)是一个开源的分布式搜索和分析引擎,用于快速存储、搜索和分析大量数据。它具有高性能、可扩展性和灵活性的特点,被广泛用于构建实时搜索、日志分析、数据可视化等应用。
本文主要介绍ES索引的操作,索引中数据的操作,增、删、改功能。
一、环境准备
版本
Docker version 20.10.22
elasticsearch:7.13.3
kibana:7.13.3
ps:具体启动命令参考第一篇ES博客
二、创建索引
创建索引
创建索引,my_test_index,分别有四个字段id、name、age、remark
PUT:代表请求方式为 put 类型
my_test_index:代表索引的名称
number_of_shards:分片数
number_of_replicas:副本数
正如上述所说,put请求是restful请求中的类型,也就是说es支持http请求的方式执行命令,只需在
/前添加es的地址即可。
PUT /my_test_index_part2
{"settings": {"number_of_shards": 3,"number_of_replicas": 1},"mappings": {"properties": {"id": {"type": "integer"},"name": {"type": "keyword"},"age": {"type": "integer"},"remark": {"type": "text"}}}
}// 执行结果
{"acknowledged" : true,"shards_acknowledged" : true,"index" : "my_test_index_part2"
}
三、数据操作
添加数据(Document)
索引(index)中的数据称为document,一条document相当于一条数据,下面介绍几种添加数据的方法
POST /<index>/_doc
PUT /<index>/_doc/<_id>POST /<index>/_create/<_id>
PUT /<index>/_create/<_id>
第一个单词代表请求方式、<index>指索引名称、_doc和_create代表是两种方式插入数据,下面开始插入数据
_doc方式
分别执行下面命令
POST /my_test_index_part2/_doc
{"id": "1","name": "张三","age": "18","remark": "张三爱吃肉"
}POST /my_test_index_part2/_doc/2
{"id": "2","name": "李四","age": "19","remark": "李四爱吃水果"
}PUT /my_test_index_part2/_doc/3
{"id": "3","name": "王五","age": "20","remark": "王五爱吃蔬菜"
}GET /my_test_index_part2/_search
先说结论,在_doc的情况下
- POST 可以创建成功,但是 _id 是es随机给定的
- POST + <_id> 可以创建成功,_id也是我们指定的
- PUT 不可以运行
- PUT + <_id> 可以创建成功,_id也是我们指定的
运行结果如下:
{// 省略...."hits" : {"total" : {"value" : 3,"relation" : "eq"},"max_score" : 1.0,"hits" : [{"_index" : "my_test_index_part2","_type" : "_doc","_id" : "2","_score" : 1.0,"_source" : {"id" : "2","name" : "李四","age" : "19","remark" : "李四爱吃水果"}},// 省略....{"_index" : "my_test_index_part2","_type" : "_doc","_id" : "8tf8sYoBBTGuuZu3VQCK","_score" : 1.0,"_source" : {"id" : "1","name" : "张三","age" : "18","remark" : "张三爱吃肉"}}]}
}
_create方式
分别执行下面命令
POST /my_test_index_part2/_create/4
{"id":"4","name": "李四四","age": "21","remark":"李四四爱吃水果"
}PUT /my_test_index_part2/_create/5
{"id":"5","name": "王五五","age": "22","remark":"王五五爱吃蔬菜"
}GET /my_test_index_part2/_search
结论,在_create的情况下
- POST 不可以运行
- POST + <_id> 可以创建成功,_id也是我们指定的
- PUT 不可以运行
- PUT + <_id> 可以创建成功,_id也是我们指定的
数据(Document)修改
在上述命令中remark字段添加叹号后运行结果,只有_doc带有<_id>的命令执行成功,其他均失败。结论:必须指定**<_id>**,在**<_doc>**下进行执行才行。
POST /my_test_index_part2/_doc/5
{"id":"5","name": "王五五","age": "22","remark":"王五五爱吃蔬菜!!!"
}// 执行此命令查看修改结果
GET /my_test_index_part2/_search
删除
<_id>填写返回的_id字段的值即可
DELETE /<index>/_doc/<_id>DELETE /my_test_index/_doc/aCnJjYoBcmOMV0ezI5zx
四、结论
新增
POST /<index>/_doc
POST /<index>/_doc/<_id>
- <_id>不指定时,ES会为我们自动生成id;
- 指定<_id>时,且id在索引中不存在,ES将添加一条指定id的数据;
- 指定<_id>时,但id在索引中存在,ES将会更新这条数据;
PUT /<index>/_doc/<_id>
- <_id>必须指定,不指定会报错;
- <_id>在索引中不存在,为添加新数据;
- <_id>在索引中存在,为修改数据;
POST /<index>/_create/<_id>
PUT /<index>/_create/<_id>
- id必须指定;
- 指定的id如果在索引中存在,报错,添加不成功;
- 指定的id在索引中不存在,添加成功,符合预期;
删除
DELETE /<index>/_doc/<_id>
查询
单条
GET /<index>/_doc/<_id>
全部
GET /<index>/_doc/_search
相关文章:
【Elasticsearch】数据简单操作(二)
简介:Elasticsearch(ES)是一个开源的分布式搜索和分析引擎,用于快速存储、搜索和分析大量数据。它具有高性能、可扩展性和灵活性的特点,被广泛用于构建实时搜索、日志分析、数据可视化等应用。 本文主要介绍ES索引的操…...
4 vCPU 实例达成 100 万 JSON API 请求/秒的优化实践
“性能工程” (Performance engineering)是个日渐流行的概念。顾名思义“性能工程”是包含在系统开发生命周期中所应用的一个技术分支,其目的就是确保满足非功能性的性能需求,例如:性能、可靠性等。由于现代软件系统变…...
呼叫中心系统有什么优势
在随着企业的管理水平也在不断提高。企业经营管理中所涉及到的各种复杂问题都有逐渐凸显出来。传统的呼叫中心已无法满足企业服务需求和客户满意度变化的要求。因此通过呼叫中心系统将企业业务流程和数据整合起来进行管理和运营已经成为目前企业管理领域中较为流行和成熟之选。…...
如何在linux操作系统下安装nvm
本文主要介绍如何在linux操作系统下安装nvm,如果想知道nvm如何在windows操作系统下使用,请参考文章如何通过nvm管理多个nodejs版本_nvm 查看所有node版本-CSDN博客。 1、nvm下载 nvm全称Node Version Manager,即Node版本管理器。访问官网地址…...
Linux 入门:基本指令
本篇文章来介绍我们在初学Linux时可以会碰倒的一些基本指令,让我们对这些指令有一个基本的了解。 目录 01. ls 指令 02. pwd 命令 03. cd 指令 04. touch 指令 05. mkdir 指令(重要) 06. rmdir指令 && rm 指令(重…...
IP转地理位置:探讨技术与应用
IP地址是互联网上设备的唯一标识符,而将IP地址转换为地理位置信息是网络管理、安全监控和市场定位等领域中的一项重要任务。本文将深入探讨IP转地理位置的技术原理和各种应用场景。 IP地址与地理位置 IP地址(Internet Protocol Address)是一…...
关于埋点上报
一、埋点上报结构包含哪些? 埋点上报结构一般包含以下信息: 事件名称:标识上报的是哪个事件,例如“注册成功”或“点击按钮”等。事件发生时间:记录事件发生的时间戳。用户ID:标识事件所属的用户。设备信息…...
最新博客园图片上传接口,模拟实现图片上传
简单看了一下博客园的图片上传接口,可以拿来做图床工具,仅供参考学习,请勿滥用。 1、实例代码 #!/usr/bin/python # -*- coding: UTF-8 -*- """ author: Roc-xb """import requestsurl "https://uplo…...
ROS2 从头开始:第 08/8回 - 使用 ROS2 生命周期节点简化机器人软件组件管理
一、说明 欢迎来到我在 ROS2 上的系列的第八部分。对于那些可能不熟悉该系列的人,我已经涵盖了一系列主题,包括 ROS2 简介、如何创建发布者和订阅者、自定义消息和服务创建、...
Vue组件库Element
目录 Vue组件库ElementElement简介Element快速入门环境配置Element常用组件Table表格Table表格演示Table表格属性详解 Pagination分页Pagination分页演示Pagination分页属性详解Pagination分页事件详解 Dialog对话框Dialog对话框组件演示Dialog对话框属性详解 Form表单Form表单…...
broadcast自动扩展
broadcast: 1、能够进行维度扩展,是自动的2、在扩展的时候不需要拷贝数据要点: - 从最小的维度开始匹配,如果前面没有维度了,在前面插入一个新的维度。- 插入的新维度size是1,再将其扩展为与目标相同大小si…...
【Pm4py第七讲】关于visualization
本节用于介绍pm4py中的可视化函数,包括可视化bpmn、petri、性能图谱、变迁系统等。 1.函数概述 本次主要介绍Pm4py中一些常见的可视化函数,总览如下表: 函数名说明view_alignments(log, aligned_traces[, format])可视化对齐方法 view_bpmn(…...
通过 BigQuery 中的 11 个新链增强 Google Cloud 的区块链数据服务
2018 年初,Google Cloud 与社区合作,通过BigQuery 公共数据集实现区块链数据民主化;2019 年,又扩展了六个数据集;今天,我们在 BigQuery 公共数据集中添加了 11 个最受欢迎的区块链预览版。我们也在对该程序…...
C++笔记之文档术语——将可调用对象作为函数参数
C笔记之文档术语——将可调用对象作为函数参数 相关博文:C笔记之函数对象functors与可调用对象 文章目录 C笔记之文档术语——将可调用对象作为函数参数1.在函数参数中传递可调用对象2.‘在参数中传入可调用对象’和‘将可调用对象作为函数参数’哪个描述更加专业…...
【Android知识笔记】FrameWork中的设计模式
一、FrameWork中有哪些设计巧妙之处 例如: Binder调用,模糊进程边界: 屏蔽跨进程IPC通信的细节,让开发者把精力放在业务上面,无需关心进程之间的通信。Bitmap大图传输,高性能: 只传递Binder句柄,到目标进程后做内存映射,不用做大量数据拷贝,速度非常快。Zygote创建进…...
机器学习西瓜书+南瓜书吃瓜教程第三章学习笔记
本次学习为周老师的机器学习西瓜书谢老师南瓜书Datawhale视频 视频地址 下面为本人的学习笔记,最近很忙还没学多少,之后补!!! u1s1,边看视频边自己手推一遍真的清楚很多,强烈推荐自己手推虽然花…...
JUnit5单元测试提示“Not tests were found”错误
JUnit5单元测试提示“Not tests were found”错误,如下图所示: 或者 问题解析: 1)使用Test注解时,不能有返回值; 2)使用Test注解时,不能使用private关键字; 存在以上情…...
C++ -- IO流
目录 C语言的输入与输出 CIO流 C标准IO流 C文件IO流 文件常见的打开方式如下 以二进制的形式操作文件 以文本的形式操作文件 读写结构体 stringstream的简单介绍 C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输…...
uniapp:如何修改组件默认样式
日历组件默认样式如下图,但是我不想要右上角的红点,并且日期下面的数字要加红色背景,变成圆形,还是先用元素检查找到元素的类名,然后通过/deep/来覆盖样式,需要注意的是,lang要scss或者less&…...
Lombok @Accessors(chain = true) 导致 FastJson parsObject()对父类属性失效
我们在项目中经常会用到lombok工具对POJO类进行简化,但不可避免的存在父类和子类的设计,并且会对父类和子类进行序列化和反序列化,今天遇到了一个问题,序列化的json字符串转化为子类对象时无法获取到父类属性值,对象中所有父类属性均为空值或默认值,很是奇怪,代码如下: 父类:P…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
鸿蒙HarmonyOS 5军旗小游戏实现指南
1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...
