ElasticSearch综合练习题,ES为8版本,使用Kibana运行语句
文章目录
- 前言
- 一、ES查询集群情况
- 二、ES索引习题
- 查询所有索引
- 查询单个索引
- 三、ES增删改查数据
- 单条处理
- 批量处理
- 四、雇员查询练习题
- 五、学生查询练习题
- 六、商品信息联系题
- 其他:一问一答
- 参考文档
前言
- ES8版本没有type概念,所以语法可能会与其他版本有差异
一、ES查询集群情况
- 查看集群的健康状况
GET _cat/health
- 查询ES的所有配置
GET _all
二、ES索引习题
- es的索引mapper结构不支持修改已经存在的字段类型,但是能添加新的字段
查询所有索引
- 查询ES中所有的index
GET _cat/indices
- 查询所有index列表,格式化查询
GET _mapping?pretty=true
- 查看所有索引文档总数
GET _all/_count
查询单个索引
- 增加一个aura_index的index库
PUT /aura_index
- 查询aura_index索引的所有信息
GET /aura_index
- 删除一个aura_index的index库
DELETE /aura_index
- 查看aura_index索引文档总数
GET /aura_index/_count
- 修改分片副本数量
PUT /aura_index/_settings
{"index":{"number_of_replicas":4}
}
- 新增Mapping映射
POST /aura_index/_mapping
{"properties":{"phone":{"type":"keyword"}}
}
- 创建website的index,要求为该索引有3个分片,2份副本
PUT /website
{"settings":{"index":{"number_of_shards":3,"number_of_replicas":2}}
}
{"website": {"aliases": {},"mappings": {},"settings": {"index": {"creation_date": "1561987828517","number_of_shards": "3","number_of_replicas": "2","uuid": "3aiQiakoQeGcnrfdBVqBjA","version": {"created": "6020299"},"provided_name": "website"}}}
}
三、ES增删改查数据
- 无论这个id是否存在,只要对这个id操作增删改,都会使这个id的version加1。
- 如果该id已经存在,增加一条数据,旧数据完全被新数据完全覆盖。(不会报错)
- 更新一条数据,如果id或者字段不存在(报错)
单条处理
- 增加一条数据
PUT /megacorp/_doc/1
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
- 查询一条数据
GET /megacorp/_doc/1
- 修改first字段
POST /megacorp/_update/1
{"doc":{"first_name" : "John001"}
}
- 删除数据
DELETE /megacorp/_doc/1
批量处理
_bulk命令:
第一个json表示操作类型和操作的id
第二个json是操作所需要的数据。(不允许换行,不然报错)
反复执行,形成一个命令多个操作
- 批量新增数据
POST megacorp/_bulk
{"index":{"_id":4}}
{"id":4,"name":"admin","counter":"10","tags":["red","black"]}
{"index":{"_id":5}}
{"id":5,"name":"zcy"}
{"index":{"_id":6}}
{"id":6,"name":"admin006","counter":"10","tags":["red","black"]}
- 批量修改数据
修改的字段前必须带上 ctx._source.这个格式
POST megacorp/_bulk
{"update":{"_id":4}}
{"script":{"source":"ctx._source.name='admin_update'"}}
{"update":{"_id":5}}
{"script":{"source":"ctx._source.name='zcy_update'"}}
{"update":{"_id":6}}
{"script":{"source":"ctx._source.name='admin006_update'"}}
- 批量删除数据
POST megacorp/_bulk
{"delete":{"_id":4}}
{"delete":{"_id":5}}
{"delete":{"_id":6}}
四、雇员查询练习题
- 初始化数据
POST megacorp/_bulk
{"index":{"_id":1}}
{"first_name" : "John","last_name" : "Smith","age" : 25,"about" : "I love to go rock climbing","interests": [ "sports", "music" ]}
{"index":{"_id":2}}
{"first_name" : "Jane","last_name" : "Smith","age" : 32,"about" : "I like to collect rock albums","interests": [ "music" ]}
{"index":{"_id":3}}
{"first_name" : "Douglas","last_name" : "Fir","age" : 35,"about": "I like to build cabinets","interests": [ "forestry" ]}
- 查看雇员id为1的信息
GET /megacorp/_doc/1
- 搜索所有员工信息
GET /megacorp/_search
- 搜索last_name字段值为Smith的员工信息
GET /megacorp/_search
{"query": {"match": {"last_name" : "Smith"}}
}
GET /megacorp/_search
{"query": {"multi_match": {"query": "Smith","fields": ["last_name"]}}
}
- 搜索名字为 Smith 的雇员,但年龄大于 30 岁的
GET /megacorp/_search
{"query": {"bool": {"must": [{"match": { "last_name" : "Smith"}},{"range": { "age": { "gt": 30}}}]}}
}
- 搜索下所有喜欢攀岩(rock climbing)的雇员。
GET /megacorp/_search{"query": {"multi_match": {"query": "climbing","fields": ["about"]}}
}
- 仅匹配同时包含 “rock” 和 “climbing”,并且二者以短语“rock climbing” 的形式紧挨着的雇员记录
GET /megacorp/_search
{"query": {"match_phrase":{"about":"rock climbing"}}
}
- 仅匹配同时包含 “rock” 和 “climbing”,并且二者以短语“rock climbing” 的形式紧挨着的雇员记录,同时需要高亮显示搜索的内容。
GET /megacorp/_search
{"query": {"match_phrase":{"about":"rock climbing"}},"highlight": {"fields" : {"about" : {}}}
}
- 求出所有雇员年龄相加的值
GET /megacorp/_search
{"size": 0,"aggs": {"total_amount": {"sum": {"field": "age"}}}
}
- 求出年龄大于30的雇员,年龄相加的值
GET /megacorp/_search
{"query": {"range": {"age": {"gt": 30}}}, "size": 0,"aggs": {"total_amount": {"sum": {"field": "age"}}}
}
- 求所有雇员的平均年龄
GET /megacorp/_search
{"size": 0,"aggs": {"avg_age": {"avg": {"field": "age"}}}
}
五、学生查询练习题
- 初始化数据
PUT /_bulk
{"create":{"_index":"stu","_id":"1"}}
{"id": 1, "studentNo": "TH-CHEM-2016-C001", "name": "Jonh Smith", "major":"Chemistry", "gpa": 4.8, "yearOfBorn": 2000, "classOf": 2016, "interest": "soccer, basketball, badminton, chess"}
{"create":{"_index":"stu","_id":"2"}}
{"id": 2, "studentNo": "TH-PHY-2018-C001", "name": "Isaac Newton", "major":"Physics", "gpa": 3.6, "yearOfBorn": 2001, "classOf": 2018, "interest": "novel, soccer, cooking"}
{"create":{"_index":"stu","_id":"3"}}
{"id": 3, "studentNo": "BU-POLI-2016-C001", "name": "John Kennedy", "major":"Politics", "gpa": 4.2, "yearOfBorn": 2000, "classOf": 2016, "interest": "talking, dating, boxing, shooting, chess"}
{"create":{"_index":"stu","_id":"4"}}
{"id": 4, "studentNo": "BU-POLI-2015-C001", "name": "John Kerry", "major":"Politics", "gpa": 4.1, "yearOfBorn": 1999, "classOf": 2015, "interest": "money, basketball"}
{"create":{"_index":"stu","_id":"5"}}
{"id": 5, "studentNo": "BU-ARTS-2016-C002", "name": "Da Vinci", "major":"Arts", "gpa": 4.8, "yearOfBorn": 1995, "classOf": 2016, "interest": "drawing, music, wine"}
- 同时查询id为1,3,5
GET /stu/_search
{"query":{"terms":{"id":["1","3","5"]}}
}
- 名字不叫John
GET /stu/_search
{"query":{"bool":{"must_not":{"match":{"name":"John"}}}}
}
- 在2016年以前入学的文档
GET /stu/_search
{"query":{"range":{"classOf":{"lt":"2016"}}}
}
- 请把id为4文档添加一个兴趣(字段为“interest”) “poker”(PS:根据查询结果修改字段属性的值)
POST /stu/_update/4
{"doc":{"interest" : "money,basketball,poker"}
}
六、商品信息联系题
- 初始化数据
PUT /mystore
{"settings": {"number_of_shards": 1},"mappings": {"properties": {"price": {"type": "integer"},"productID": {"type": "text"}}}
}
POST mystore/_bulk
{"index":{"_id":1}}
{"price":10,"productID":"XHDK-A-1293-#fJ3"}
{"index":{"_id":2}}
{"price":20,"productID":"XHDK-A-1293-#f20"}
{"index":{"_id":3}}
{"price":30,"productID":"JODL-X-1937-#pV7"}
{"index":{"_id":4}}
{"price":30,"productID":"QQPX-R-3956-#aD8"}
{"index":{"_id":5}}
{"price":50,"productID":"KDKE-B-9947-#kL5"}
{"index":{"_id":6}}
{"price":30,"productID":"KDKE-B-9947-#kL5"}
{"index":{"_id":7}}
{"price":70,"productID":"JODL-X-1937-#pV7"}
{"index":{"_id":8}}
{"price":40,"productID":"JODL-X-1937-#pV7"}
- 查找价格为20的商品信息,使用 constant_score 查询以非评分模式来执行 term 查询并以一作为统一评分
GET mystore/_search
{"query": {"constant_score": {"filter": {"term": { "price": 20 }}}}
}
- 查询具有"XHDK-A-1293-#fJ3"特定商品id的信息
GET mystore/_search
{"query":{"match_phrase":{"productID" : "XHDK-A-1293-#fJ3"}}
}
- 查询价格在20-40之间的商品信息
GET mystore/_search
{"query": {"range": {"price": {"gte": 20,"lte": 40}}}
}
- 查找商品列表中价格为20或30的商品信息
GET mystore/_search
{"query":{"terms":{"price":[20,30]}}
}
- 查询商品价格为30或者"productID"为"XHDK-A-1293-#fJ3"的商品信息,但是商品的"productID"不能为"QQPX-R-3956-#aD8"
GET mystore/_search
{"query": {"bool": {"should": [{"match": {"price": "30"}},{"match_phrase": {"productID": "XHDK-A-1293-#fJ3"}}],"must_not": [{"match_phrase": {"productID": "QQPX-R-3956-#aD8"}}]}}
}
- 查询productID 为"KDKE-B-9947-#kL5"的商品信息或者 productID为"JODL-X-1937-#pV7" 并且同时 price为 30的商品信息
GET mystore/_search
{"query":{"bool":{"must":[{"match":{"price":30}},{"bool": {"should":[{"match_phrase":{"productID":"KDKE-B-9947-#kL5"}},{"match_phrase":{"productID":"JODL-X-1937-#pV7"}}]}}]}}
}
其他:一问一答
- 索引结构确定了,能插入和结构不一致的数据么?
能,会自动扩大索引拥有的字段 - 索引结构确定了,同一字段能插入不同类型的数据么?
如果某字段是数字类型,不能插入字符串类型的数据,es会进行强转,强转失败则报错。但是能存入纯数字字符串,插入的数据还会以字符串的方式存储(长度有一定限制)。 - 数字类型的字段进行字符串搜索匹配么?
不能,搜索会报错
参考文档
- ElasticSearch综合练习题
- ElasticSearch从入门到精通,史上最全(持续更新,未完待续,每天一点点)
- ES: 数据增,删,改,批量操作
相关文章:
ElasticSearch综合练习题,ES为8版本,使用Kibana运行语句
文章目录 前言一、ES查询集群情况二、ES索引习题查询所有索引查询单个索引 三、ES增删改查数据单条处理批量处理 四、雇员查询练习题五、学生查询练习题六、商品信息联系题其他:一问一答参考文档 前言 ES8版本没有type概念,所以语法可能会与其他版本有差…...
Java方法中不使用的对象应该手动赋值为NULL吗?
在java方法中,不使用的对象是否应该手动赋值为null?我们先来通过一个示例看一下。 垃圾回收示例一 public class GuoGuoTest {public static void main(String[] args) {byte[] placeholder new byte[64 * 1024 * 1024];System.gc();} } 上面代码向内…...
Mysql主从搭建
Mysql主从搭建 1.Mysql下载1.1 查看操作系统2.2 下载mysql安装包 2.Mysql安装2.1 解压2.2 目录重命名2.3 创建data,存储文件2.4 创建用户组2.5 授权用户2.6 配置环境变量2.7 编辑my.cnf2.8 创建相关目录和文件2.9 初始化数据库2.10 复制mysql.server到/etc/init.d/下…...
WPF程序给按钮增加不同状态的图片
首先我们在资源里添加几个图片,Up,Over和Down状态。 然后我们创建一个Style。默认我们的背景设置成Up 然后在Triggers里添加代码,当Property:IsMouseOver为True的时候更换成Over;当Property:IsPressed为Tr…...
Java编程陷阱(三)
陷阱11:不要使用StringBuffer类来拼接字符串 StringBuffer是Java中的一个类,它可以表示一个可变的字符串,也就是可以对字符串进行修改和追加的操作,比如使用append或insert方法来拼接字符串。有时候,我们需要使用StringBuffer类来拼接字符串,比如在循环中动态地构建一个字…...
数据仓库相关
在阿里巴巴的数据体系中,我们建议将数据仓库分为三层,自下而上为:数据引入层(ODS,Operation Data Store)、数据公共层(CDM,Common Data Model)和数据应用层(…...
SpringBoot学习笔记-创建个人中心页面(下)
笔记内容转载自 AcWing 的 SpringBoot 框架课讲义,课程链接:AcWing SpringBoot 框架课。 CONTENTS 1. 实现个人中心页面2. POJO时区修改3. 集成代码编辑器 本节实现个人中心的前端页面,用户能够查看自己的 Bot 信息,并能创建、修改…...
电子秤方案:做一个宠物勺方案设计
养宠物是一件费心劳力的事情,但同时也是能够给你带来快乐和幸福感的事情。就是有时候会怕宠物毫无征兆地生病令人措手不及,所以电子秤方案设计鼎盛合科技分享一个小方案,能够及时了解到宠物的身体状况问题。 蓝牙宠物勺是一种具有记录和称重…...
Debezium-Embedded 实时监控MySQL数据变更
1.Debezium-Embedded 简介 Debezium连接器的操作通常是将它们部署到Kafka Connect服务,并配置一个或多个连接器来监控上游数据库,并为它们在上游数据库中看到的所有更改生成数据更改事件。这些数据更改事件被写入Kafka,在那里它们可以被许多不…...
计算机是如何工作的(简单介绍)
目录 一、冯诺依曼体系 二、CPU基本流程工作 逻辑⻔ 电⼦开关——机械继电器(Mechanical Relay) ⻔电路(Gate Circuit) 算术逻辑单元 ALU(Arithmetic & Logic Unit) 算术单元(ArithmeticUnit) 逻辑单元(Logic Unit) ALU 符号 寄存器(Regis…...
JSP基本表单和Request对象使用例子
表单的jsp; <%page contentType"text/html;charsetgbk" pageEncoding"UTF-8"%> <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><titl…...
【Redux】Redux 基本使用
1. Redux 快速上手 Redux 是 React 最常用的集中状态管理工具,类似于Vue中的Pinia(Vuex),可以独立于框架运行。 <button id"decrement">-</button> <span id"count">0</span> <…...
多线程Thread(初阶一:认识线程)
目录 一、引用线程的原因 二、线程的概念 三、进程和线程的区别 四、多线程编程 一、引用线程的原因 多任务操作系统,希望系统能同时运行多个任务。所以会涉及到进程,需要对进程进行管理、调度等。 而单任务操作系统,就完全不涉及到进程…...
系列五、GC垃圾回收【四大垃圾算法-复制算法】
一、堆的内存组成 二、复制算法 2.1、发生位置 复制算法主要发生在新生代,发生在新生代的垃圾回收也被叫做Minor GC。 2.2、 Minor GC的过程 复制>清空》交换 1、eden、from区中的对象复制到to区,年龄1 首先,当eden区满的时候会触发第一…...
LeetCode(24)文本左右对齐【数组/字符串】【困难】
目录 1.题目2.答案3.提交结果截图 链接: 文本左右对齐 1.题目 给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用 “贪心算法” 来放置给定的单…...
Spring-Spring之事务底层源码解析
EnableTransactionManagement工作原理 开启Spring事务本质上就是增加了一个Advisor,但我们使用EnableTransactionManagement注解来开启Spring事务是,该注解代理的功能就是向Spring容器中添加了两个Bean: AutoProxyRegistrarProxyTransactio…...
后端面经学习自测(三)
文章目录 1、ArrayList和Linkedlist区别?2、ArrayList扩容机制?3、ArrayList和Linkedlist分别能做什么场景?4、事务特性?MySQL事务Redis事务Spring事务5、在Spring中事务失效的场景?6、Java泛型?7、泛型擦除…...
力扣labuladong——一刷day40
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣341. 扁平化嵌套列表迭代器 前言 N叉树的结构,构造迭代器 一、力扣341. 扁平化嵌套列表迭代器 /*** // This is the interface that allo…...
在VS Code中使用VIM
文章目录 安装和基本使用设置 安装和基本使用 VIM是VS Code的强大对手,其简化版本VI是Linux内置的文本编辑器,堪称VS Code问世之前最流行的编辑器,也是VS Code问世之后,我仍在使用的编辑器。 对VIM无法割舍的原因有二࿰…...
注解【元数据,自定义注解等概念详解】(超简单的好吧)
注解的理解与使用 注解的释义元数据的含义基础阶段常见的注解注解的作用(包括但不限于)教你读懂注解内部代码内容五种元注解尝试解读简单注解我当时的疑惑点 自定义注解自定义注解举例 注解的原理总结 注解的释义 我们都知道注释是拿来给程序员看的&…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
