ElasticSeach--springboot中使用
目录
一.引入依赖
二.配置链接信息
三.索引库测试
1.创建索引库
2.查询索引库
3.删除索引库
四.文档测试
1.添加文档
2.修改文档
3.删除文档
4.查询具体文档
5.批量添加文档
五.查询测试
1.查询所有
2.根据属性term匹配查询
3.分页查询
4.排序
5.过滤属性
6.bool查询
7.范围查询
8.模糊查询
9.高亮查询
10.聚合查询
10.1最大年龄
10.2分组查询
一.引入依赖
<dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.0</version></dependency><!--es的客户端--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.8.0</version></dependency></dependencies>
二.配置链接信息
#自定义elasticsearch连接配置
elasticsearch:host: 192.168.81.128port: 9200
@Getter
@Setter
@Configuration
@ConfigurationProperties(prefix = "elasticsearch")
public class ElasticSearchConfig {private String host;private int port;@Beanpublic RestHighLevelClient client(){return new RestHighLevelClient(RestClient.builder(new HttpHost(host, port, "http")));}
}
三.索引库测试
1.创建索引库
/*** 添加索引库*/@Testpublic void AddIndex() throws IOException {//创建索引库CreateIndexRequest request = new CreateIndexRequest("user");//获取响应CreateIndexResponse response =restHighLevelClient.indices().create(request,RequestOptions.DEFAULT);boolean acknowledged = response.isAcknowledged();System.out.println("响应状态:"+acknowledged);}
2.查询索引库
//查询索引库@Testpublic void testGetIndex() throws IOException {GetIndexRequest request = new GetIndexRequest("user");GetIndexResponse response = restHighLevelClient.indices().get(request, RequestOptions.DEFAULT);//System.out.println(response.getAliases());//获取默认配置System.out.println(response.getDefaultSettings());//获取索引名称System.out.println(Arrays.toString(response.getIndices()));//获取映射System.out.println(response.getMappings());}
3.删除索引库
/*** 删除索引库*/@Testpublic void testDeleteIndex() throws IOException {//删除索引请求DeleteIndexRequest request = new DeleteIndexRequest("user");AcknowledgedResponse response = restHighLevelClient.indices().delete(request,RequestOptions.DEFAULT);System.out.println(response.isAcknowledged());restHighLevelClient.close();}
四.文档测试
1.添加文档
/*** 添加文档*/@Testpublic void testAddDoucument() throws IOException {/*** 第一次不存在时是创建,* 第二次存在时就是修改,将修改version版本号*/IndexRequest indexRequest = new IndexRequest("user");indexRequest.id("122");User user = new User();user.setId(122);user.setName("张三");user.setAge(12);user.setScore(123);//添加数据indexRequest.source(JSON.toJSONString(user), XContentType.JSON);IndexResponse response = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);//获取索引库idSystem.out.println(response.getIndex());//获取文档idSystem.out.println(response.getId());//获取版本System.out.println(response.getVersion());//获取结果System.out.println(response.getResult());}
2.修改文档
/*** 修改文档*/@Testpublic void testUpadteDoc() throws IOException {UpdateRequest updateRequest = new UpdateRequest("user","122");User user = new User();user.setId(122);user.setName("张三");user.setAge(13);user.setScore(123);updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);UpdateResponse res = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);System.out.println(res.getId());System.out.println(res.getIndex());System.out.println(res.getResult());System.out.println(res.getVersion());restHighLevelClient.close();}
3.删除文档
/*** 删除文档*/@Testpublic void testDelteDoc() throws IOException {DeleteRequest deleteRequest = new DeleteRequest("user","122");DeleteResponse res = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);System.out.println(res.getId());System.out.println(res.getIndex());System.out.println(res.getResult());}
4.查询具体文档
/*** 查询文档*/@Testpublic void testGetDoc() throws IOException {GetRequest getRequest =new GetRequest("user","122");GetResponse res = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);System.out.println(res.getIndex());System.out.println(res.getId());System.out.println(res.getSource());System.out.println(res.getFields());System.out.println(res.getSourceAsString()); //返回json串
// user
// 122
// {score=123, name=张三, id=122, age=12}
// {}
// {"age":12,"id":122,"name":"张三","score":123}}
5.批量添加文档
/*** 批量添加文档*/@Testpublic void testBulkAdd() throws IOException {User user1 = new User(1,"王五",12,213);User user2 = new User(2,"李四",321,213);User user3 = new User(3,"赵六",24,213);User user4 = new User(4,"zhangsan",41,213);User user5 = new User(5,"蔡徐坤",21,213);BulkRequest request = new BulkRequest("user");IndexRequest request1 = new IndexRequest("user").id(user1.getId().toString());request1.source(JSON.toJSONString(user1),XContentType.JSON);IndexRequest request2 = new IndexRequest("user").id(user2.getId().toString());request2.source(JSON.toJSONString(user2),XContentType.JSON);IndexRequest request3 = new IndexRequest("user").id(user3.getId().toString());request3.source(JSON.toJSONString(user3),XContentType.JSON);IndexRequest request4 = new IndexRequest("user").id(user4.getId().toString());;request4.source(JSON.toJSONString(user4),XContentType.JSON);IndexRequest request5 = new IndexRequest("user").id(user5.getId().toString());request5.source(JSON.toJSONString(user5),XContentType.JSON);request.add(request1);request.add(request2);request.add(request3);request.add(request4);request.add(request5);BulkResponse res = restHighLevelClient.bulk(request, RequestOptions.DEFAULT);System.out.println(res.getIngestTook());System.out.println(res.getTook());System.out.println(res.getIngestTookInMillis());}
五.查询测试
1.查询所有
/*** 查询所有*/@Testpublic void testqueryAll() throws IOException {SearchRequest searchRequest = new SearchRequest();//指定索引库searchRequest.indices("user");SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//查询所有sourceBuilder.query(QueryBuilders.matchAllQuery());searchRequest.source(sourceBuilder);SearchResponse res = client.search(searchRequest, RequestOptions.DEFAULT);//查询匹配SearchHits hits = res.getHits();System.out.println("took:" + res.getTook());System.out.println("是否超时:" + res.isTimedOut());System.out.println("TotalHits:" + hits.getTotalHits());System.out.println("MaxScore:" + hits.getMaxScore());for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}}
2.根据属性term匹配查询
/*** 根据term条件查询* @throws IOException*/@Testpublic void testTermQuery() throws IOException {SearchRequest request = new SearchRequest();request.indices("user");//构建查询的请求体SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//查询所有对象sourceBuilder.query(QueryBuilders.termQuery("name","zhangsan"));request.source(sourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT);//查询匹配SearchHits hits = response.getHits();System.out.println("took:" + response.getTook());System.out.println("是否超时:" + response.isTimedOut());System.out.println("TotalHits:" + hits.getTotalHits());System.out.println("MaxScore:" + hits.getMaxScore());for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}}
3.分页查询
/*** 分页查询*/@Testpublic void testPageQuery() throws IOException {SearchRequest request = new SearchRequest();request.indices("user");//构建查询的请求体SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//查询所有对象sourceBuilder.query(QueryBuilders.matchAllQuery());//第一页sourceBuilder.from(0);//三条记录sourceBuilder.size(11);request.source(sourceBuilder);//添加分页信息SearchResponse response = client.search(request, RequestOptions.DEFAULT);//查询匹配SearchHits hits = response.getHits();System.out.println("took:" + response.getTook());System.out.println("是否超时:" + response.isTimedOut());System.out.println("TotalHits:" + hits.getTotalHits());System.out.println("MaxScore:" + hits.getMaxScore());for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}}
4.排序
//年龄排序 倒序,从大到小sourceBuilder.sort("age", SortOrder.DESC);
5.过滤属性
//查询过滤字段String[] excludes = {"age"};//过滤掉age属性String[] includes = {};sourceBuilder.fetchSource(includes,excludes);
6.bool查询
//创建搜索对象SearchRequest request = new SearchRequest();request.indices("user");//构建查询的请求体SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();//必须包含boolQuery.must(QueryBuilders.matchQuery("age",18));//一定不包含boolQuery.mustNot(QueryBuilders.matchQuery("name","lisi"));//可能包含boolQuery.should(QueryBuilders.matchQuery("name","zhangsan"));//查询所有对象sourceBuilder.query(boolQuery);request.source(sourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT);
7.范围查询
//创建搜索对象SearchRequest request = new SearchRequest();request.indices("user");//构建查询的请求体SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//范围查询RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age");//大于等于rangeQuery.gte("19");//小于等于rangeQuery.lte("40");//查询所有对象sourceBuilder.query(rangeQuery);request.source(sourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT);
8.模糊查询
//创建搜索对象SearchRequest request = new SearchRequest();request.indices("user");//构建查询的请求体SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//模糊查询FuzzyQueryBuilder fuzzyQuery = QueryBuilders.fuzzyQuery("name", "zhangsan");fuzzyQuery.fuzziness(Fuzziness.ONE);sourceBuilder.query(fuzzyQuery);request.source(sourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT);
9.高亮查询
//高亮查询SearchRequest request = new SearchRequest("user");//创建查询请求体构建器SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//构建查询方式,高亮查询TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "zhangsan");//设置查询方式sourceBuilder.query(termQueryBuilder);//构建高亮字段HighlightBuilder highlightBuilder = new HighlightBuilder();//设置标签前缀highlightBuilder.preTags("<font color='red'");//设置标签后缀highlightBuilder.postTags("</font>");//设置高亮字段highlightBuilder.field("name");//设置高亮构建对象sourceBuilder.highlighter(highlightBuilder);//设置请求体request.source(sourceBuilder);//客户端发送请求,获取响应对象SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 打印响应结果SearchHits hits = response.getHits();System.out.println("took::"+response.getTook());System.out.println("time_out::"+response.isTimedOut());System.out.println("total::"+hits.getTotalHits());System.out.println("max_s core::"+hits.getMaxScore());System.out.println("hits::::>>");for (SearchHit hit : hits) {String sourceAsString = hit.getSourceAsString();System.out.println(sourceAsString);//打印高亮结果Map<String, HighlightField> highlightFields = hit.getHighlightFields();System.out.println(highlightFields);System.out.println("<<::::");}
10.聚合查询
10.1最大年龄
SearchRequest request = new SearchRequest().indices("user");SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.aggregation(AggregationBuilders.max("maxAge").field("age"));//设置请求体request.source(sourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT);//打印响应结果SearchHits hits = response.getHits();System.out.println("hits = " + hits);System.out.println(response);
10.2分组查询
//创建搜索对象SearchRequest request = new SearchRequest().indices("user");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.aggregation(AggregationBuilders.terms("age_groupby").field("age"));//设置请求体request.source(searchSourceBuilder);SearchResponse response = client.search(request, RequestOptions.DEFAULT);System.out.println(response.getHits());System.out.println(response);
相关文章:
ElasticSeach--springboot中使用
目录 一.引入依赖 二.配置链接信息 三.索引库测试 1.创建索引库 2.查询索引库 3.删除索引库 四.文档测试 1.添加文档 2.修改文档 3.删除文档 4.查询具体文档 5.批量添加文档 五.查询测试 1.查询所有 2.根据属性term匹配查询 3.分页查询 4.排序 5.过滤属性 6.boo…...
(1)(1.9) MSP (version 4.2)
文章目录 前言 1 协议概述 2 配置 3 参数说明 前言 ArduPilot 支持 MSP 协议,可通过任何串行端口进行遥测、OSD 和传感器。这样,ArduPilot 就能将遥测数据发送到 MSP 兼容设备(如大疆护目镜),用于屏幕显示&#x…...
mysql 表锁 行锁
目录 表锁(Table Lock) 行锁(Row Lock) 进一步通过举例解释 update操作走的是什么锁 表锁示例: 行锁示例: MySQL 中常见的锁类型包括: 表锁(Table Lock) 是针对整个…...
Google 提示:切忌滥用 DORA 指标
谷歌的 DevOps 研究与评估团队从事指标交易,即 DevOps 指标。但其最新的相关报告也警告不要过度使用这些指标。 DevOps 研究与评估小组(DORA)建议 IT 专业人员根据四个关键指标来评估团队绩效:部署频率,变更准备时间&a…...
2023年全球架构师峰会(ArchSummit北京站2023)-核心PPT资料下载
一、峰会简介 ArchSummit聚焦业界强大的技术成果,秉承“实践第一、案例为主”的原则,展示先进技术在行业中的典型实践,以及技术在企业转型、发展中的推动作用。旨在帮助技术管理者、CTO、架构师做好技术选型、技术团队组建与管理,…...
安全、高效的MySQL DDL解决方案
MySQL作为目前应用最广泛的开源关系型数据库,是许多网站、应用和商业产品的主要数据存储。在生产环境,线上数据库常常面临着持续的、不断变化的表结构修改(DDL),如增加、更改、删除字段和索引等等。其中一些DDL操作在M…...
100GPTS计划-AI学术AcademicRefiner
地址 https://chat.openai.com/g/g-LcMl7q6rk-academic-refiner https://poe.com/AcademicRefiner 测试 减少相似性 增加独特性 修改http://t.csdnimg.cn/jyHwo这篇文章微调 专注于人工智能、科技、金融和医学领域的学术论文改写,秉承严格的专业和学术标准。 …...
k8s 中部署Jenkins
创建namespace apiVersion: v1 kind: Namespace metadata:name: jenkins创建pv以及pvc kind: PersistentVolume apiVersion: v1 metadata:name: jenkins-pv-volumenamespace: jenkinslabels:type: localapp: jenkins spec:#storageClassName: manualcapacity:storage: 5Giacc…...
Spring Cloud和Zookeeper的集成,构建高可扩展的分布式系统
引言 构建高可扩展的分布式系统是现代应用程序开发中的重要挑战之一。在分布式系统中,负载均衡和分布式锁是两个关键问题。本文将介绍如何使用Spring Cloud和Zookeeper集成来实现高可扩展的分布式系统,并分析其负载均衡原理和分布式锁的应用。 1. 分布…...
【唐山海德教育】安全员c证怎么考
1、注册地在本市的施工单位在职“三类人员”可申请参加安全生产考核; 2、职业道德良好,身体健康,年龄不超过60周岁(法定代表人除外); 3、筑施工企业专职安全生产管理人员需有中专(含高中、中技…...
MySQL是如何保证数据不丢失的?
文章目录 前言Buffer Pool 和 DML 的关系DML操作流程加载数据页更新记录 数据持久化方案合适的时机刷盘双写机制日志先行机制日志刷盘机制Redo Log 恢复数据 总结 前言 上篇文章《InnoDB在SQL查询中的关键功能和优化策略》对InnoDB的查询操作和优化事项进行了说明。但是&#…...
CUMT--Java复习--泛型与集合
目录 一、泛型 1、概述 2、通配符 3、有界类型 二、集合 1、概述 2、迭代器接口 三、集合类 1、Collection接口 2、List接口 3、Set接口 4、Queue接口 5、Map接口 四、集合转换 五、集合工具类 一、泛型 1、概述 从JDK5.0开始,Java引入泛型类型&…...
Android 权限申请
在Android中,从Android 6.0(API级别23)开始,应用在运行时需要动态申请权限。以下是一些步骤来动态申请权限: 在应用的清单文件(AndroidManifest.xml)中声明需要的权限。例如,如果应…...
R语言【base】——invisible将控制台的输出模式调整为隐藏,只允许赋值后输出,返回对象的(临时)不可见副本
Package base version 4.3.2 invisible(x NULL) 参数【x】:一个任意的 R 对象,默认为 NULL。 如果希望函数返回的值可以赋值,但在未赋值时不打印,则可以使用该函数。 f <- function(x){if (x){return (x)} else {return (in…...
LA@线性代数学习总结@主要对象和问题@思想方法
文章目录 线性代数研究对象主要问题联系核心概念核心定理 核心操作和运算基础高级小结 性质和推导方法问题转换为线性方程组求解问题验证和推导性质定理 线性代数研究对象 线性代数的研究对象主要是行列式和矩阵(向量)矩阵这种对象可以做的操作和运算很多,特别是方阵,它们的计…...
VMware克隆虚拟机
要求:利用模板虚拟机hadoop100,克隆出hadoop101虚拟机。 1、鼠标右键点击已存在的模板虚拟机hadoop100 --> 管理 --> 克隆 2、选择克隆自虚拟机中的当前状态 3、创建完整克隆 4、修改虚拟机名称、位置 5、等待克隆完成后,则成功克隆出…...
C语言中常见的关键字
一、数据类型关键字(20个) 基本数据类型(5个) void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果 char:字符型类型数据,属于整型数据的一种 intÿ…...
新型智慧视频监控系统:基于TSINGSEE青犀边缘计算AI视频识别技术的应用
边缘计算AI智能识别技术在视频监控领域的应用有很多。这项技术结合了边缘计算和人工智能技术,通过在摄像头或网关设备上运行AI算法,可以在现场实时处理和分析视频数据,从而实现智能识别和分析。目前来说,边缘计算AI视频智能技术可…...
智能优化算法应用:基于梯度算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于梯度算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于梯度算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.梯度算法4.实验参数设定5.算法结果6.参考文献7.MA…...
如何使用Docker搭建青龙面板并结合内网穿透工具发布至公网可访问
文章目录 一、前期准备本教程环境为:Centos7,可以跑Docker的系统都可以使用。本教程使用Docker部署青龙,如何安装Docker详见: 二、安装青龙面板三、映射本地部署的青龙面板至公网四、使用固定公网地址访问本地部署的青龙面板 正文…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
