【极光系列】springBoot集成elasticsearch

【极光系列】springBoot集成elasticsearch

一.gitee地址

直接下载解压可用 https://gitee.com/shawsongyue/aurora.git

模块:aurora_elasticsearch

二.windows安装elasticsearch

tips:注意es客户端版本要与java依赖版本一致,目前使用7.6.2版本

elasticsearch 7.6.2版本客户端下载: https://www.elastic.co/cn/downloads/elasticsearch

1.下载对应版本资源包

登录页面–》View path releases–》选择7.6.2版本–》window下载

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.解压缩,启动服务

直接点击E:\elasticsearch-7.6.2\bin\elasticsearch.bat启动

三.springBoot集成elasticsearch步骤

1.引入pom.xml依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xsy</groupId><artifactId>aurora_elasticsearch</artifactId><version>1.0-SNAPSHOT</version><!--基础SpringBoot依赖--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.5.RELEASE</version></parent><!--属性设置--><properties><!--java_JDK版本--><java.version>1.8</java.version><!--maven打包插件--><maven.plugin.version>3.8.1</maven.plugin.version><!--编译编码UTF-8--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--输出报告编码UTF-8--><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!--json数据格式处理工具--><fastjson.version>1.2.75</fastjson.version><!--json数据格式处理工具--><xxljob.version>2.3.0</xxljob.version><!--elasticsearch依赖--><elasticsearch.version>7.6.2</elasticsearch.version></properties><!--通用依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- json --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!--es    start--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>${elasticsearch.version}</version></dependency><!--es  end--></dependencies><!--编译打包--><build><finalName>${project.name}</finalName><!--资源文件打包--><resources><resource><directory>src/main/resources</directory></resource><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources><!--插件统一管理--><pluginManagement><plugins><!--maven打包插件--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring.boot.version}</version><configuration><fork>true</fork><finalName>${project.build.finalName}</finalName></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><!--编译打包插件--><plugin><artifactId>maven-compiler-plugin</artifactId><version>${maven.plugin.version}</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>UTF-8</encoding><compilerArgs><arg>-parameters</arg></compilerArgs></configuration></plugin></plugins></pluginManagement></build><!--配置Maven项目中需要使用的远程仓库--><repositories><repository><id>aliyun-repos</id><url>https://maven.aliyun.com/nexus/content/groups/public/</url><snapshots><enabled>false</enabled></snapshots></repository></repositories><!--用来配置maven插件的远程仓库--><pluginRepositories><pluginRepository><id>aliyun-plugin</id><url>https://maven.aliyun.com/nexus/content/groups/public/</url><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories></project>

2.修改application配置

#服务配置
server:#端口port: 7005#spring配置
spring:#应用配置application:#应用名name: aurora_elasticsearch#es配置
elasticsearch:host: localhostport: 9200scheme: http

3.包结构

在这里插入图片描述

4.创建主启动类

package com.aurora;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author 浅夏的猫* @description 主启动类* @date 22:46 2024/1/13*/
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

5.创建配置类

package com.aurora.config;import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @description es配置* @author 浅夏的猫* @datetime 6:14 2024/1/20
*/
@Configuration
public class ElasticsearchConfig {@Value("${elasticsearch.host}")private String host;@Value("${elasticsearch.port}")private int port;@Value("${elasticsearch.scheme}")private String scheme;@Beanpublic RestHighLevelClient restHighLevelClient() {return new RestHighLevelClient(RestClient.builder(new HttpHost(host, port, scheme)));}
}

6.创建工具类

package com.aurora.utils;import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.rest.RestStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.io.IOException;@Component
public class ElasticsearchUtil {@Autowiredprivate RestHighLevelClient restHighLevelClient;public boolean createIndex(String index) {boolean ackFlag = false;CreateIndexRequest request = new CreateIndexRequest(index);try {CreateIndexResponse response = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);ackFlag = response.isAcknowledged();} catch (IOException e) {e.printStackTrace();}return ackFlag;}public boolean indexDocument(String index, String id, String jsonSource) {boolean ackFlag = false;IndexRequest request = new IndexRequest(index).id(id).source(jsonSource, XContentType.JSON);try {IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);ackFlag = response.status() == RestStatus.CREATED || response.status() == RestStatus.OK;} catch (IOException e) {e.printStackTrace();}return ackFlag;}public String getDocument(String index, String id) {GetRequest getRequest = new GetRequest(index, id);String sourceAsString = null;try {sourceAsString = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT).getSourceAsString();} catch (IOException e) {e.printStackTrace();}return sourceAsString;}public boolean updateDocument(String index, String id, String jsonSource) {boolean ackFLag = false;UpdateRequest request = new UpdateRequest(index, id).doc(jsonSource, XContentType.JSON);try {UpdateResponse response = restHighLevelClient.update(request, RequestOptions.DEFAULT);ackFLag = response.status() == RestStatus.CREATED || response.status() == RestStatus.OK;} catch (IOException e) {e.printStackTrace();}return ackFLag;}public boolean deleteDocument(String index, String id) {boolean ackFlag = false;DeleteRequest request = new DeleteRequest(index, id);try {DeleteResponse response = restHighLevelClient.delete(request, RequestOptions.DEFAULT);ackFlag = response.status() == RestStatus.OK;} catch (IOException e) {e.printStackTrace();}return ackFlag;}
}

7.创建控制类

package com.aurora.controller;import com.alibaba.fastjson.JSONObject;
import com.aurora.utils.ElasticsearchUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @description 资源控制类* @author 浅夏的猫* @datetime 6:21 2024/1/20
*/
@RestController
@RequestMapping("resource")
public class ElasticsearhController {private static Logger logger = LoggerFactory.getLogger(ElasticsearhController.class);@Autowiredprivate ElasticsearchUtil elasticsearchUtil;@RequestMapping("esOperate")public String esOperate(){String index="aurora-20240120";JSONObject esJsonObj = new JSONObject();String id="aurora002";esJsonObj.put("id",id);esJsonObj.put("resourceName","aurora源码下载包");esJsonObj.put("resourceUrl","http://baidu.com");esJsonObj.put("resourceType","1");esJsonObj.put("resourceDescribe","aurora资源下载包,大概10M");//插入boolean insertFlag = elasticsearchUtil.indexDocument(index, id, esJsonObj.toString());logger.info("插入数据是否成功:{}",insertFlag);//查询String document = elasticsearchUtil.getDocument(index,id);logger.info("从es索引查询数据:{}",document);//更新boolean updateFlag = elasticsearchUtil.updateDocument(index, id, esJsonObj.toString());logger.info("更新数据是否成功:{}",updateFlag);//删除boolean deleteFlag = elasticsearchUtil.deleteDocument(index, id);logger.info("删除数据是否成功:{}",deleteFlag);//查询String documentDelete = elasticsearchUtil.getDocument(index,id);logger.info("删除后,查询es索引查询数据:{}",documentDelete);return "ok";}}

8.访问地址验证

http://localhost:7005/resource/esOperate
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/418711.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python开发之远程开发工具对比

前言 除了本地开发外&#xff0c;还有一种常见的开发方式就是远程开发&#xff0c;一般情况是一台Windows或mac笔记本作为日常使用的电脑&#xff0c;另有一台linux服务器作为开发服务器。开发服务器的性能往往较强&#xff0c;这样远程开发的方式一方面可以让我们在习惯的系统…

yum下载源,vim使用

文章目录 yum本地配置lzrsz命令行互传scp(远程拷贝)vim yum本地配置 [rootiZf8z3j2ckkap6ypn717msZ ~]# pwd /root [rootiZf8z3j2ckkap6ypn717msZ ~]# ls /etc/yum.repos.d CentOS-Base.repo epel.repo //本地配置源yum会根据/etc/yum.repo.d路径下的配置文件来构成自己的下载…

【设计模式】文件目录管理是组合模式吗?

组合模式是什么&#xff1f; 组合模式是一种将对象组合成树形结构以表示"部分-整体"的层次结构的设计模式。它使得用户对单个对象和组合对象的使用具有一致性。 组合模式在什么情况下使用&#xff1f; 当你发现你需要在代码中实现树形数据结构&#xff0c;让整体-部…

Spring Boot 3.2.2整合MyBatis-Plus 3.5.5依赖不兼容问题

问题演示 导依赖 当你启动项目就会 抛出该异常 java.lang.IllegalArgumentException: Invalid value type for attribute factoryBeanObjectType: java.lang.String 问题原因 mybatis-plus 中 mybatis 的整合包版本不够导致的 解决方案 排除掉mybatis-plus 中 mybatis 的整合…

Autosar PRport 在Simulink中的使用

文章目录 前言模型及Autosar接口配置Autosar接口模型接口 生成代码分析总结 前言 在之前使用Simulink开发Autosar模型时&#xff0c;大部分使用的RTE接口都是Sender or Receiver接口。但如果是对于那些具有存储需求的接口来说&#xff0c;一个sender接口需要有另外一个receive…

list列表可编辑状态

有时候list需要修改或选择属性,mfc自带的只能显示内容,基本上是不可以修改,为了实现这个功能需求,需要完成一下步骤转换. 第一步记录选择的单元格. 第二步创建一个编辑框CComboBox对象, 设置字体,窗口属性. 第三步获取选中单元格的位置信息. 第四步获取单元格内容信息. 第五步…

SpringMVC下半篇之整合ssm

4.ssm整合 4.1.创建表 CREATE TABLE account (id int(11) NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,money double DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8;4.2.创建工程 4.3.pom.xml <?xml version"1.0" encoding&…

Redis 消息队列和发布订阅

文章目录 基本模式生产者消费者原理&模型redis实现java实现 发布者订阅者原理&模型redis实现java实现 stream模式原理&模型工作原理redis实现Java实现 选型外传 基本模式 采用redis 三种方案&#xff1a; ● 生产者消费者&#xff1a;一个消息只能有一个消费者 ●…

2024.1.20 模拟赛总结

2024.1.20 模拟赛总结 总结时间安排考试结果考试总结 题解T1T2T3T4 总结 时间安排 8 : 00 ∼ 10 : 00 \qquad 8:00\sim 10:00 8:00∼10:00 开 T 1 T1 T1。第一眼看上去并没有明确的思路&#xff0c;简单想了想发现可以直接贪心走&#xff0c;不过好像有点小细节。推了推细节发…

图像分类 | 基于 Labelme 数据集和 VGG16 预训练模型实现迁移学习

Hi&#xff0c;大家好&#xff0c;我是源于花海。本文主要使用数据标注工具 Labelme 对自行车&#xff08;bike&#xff09;和摩托车&#xff08;motorcycle&#xff09;这两种训练样本进行标注&#xff0c;使用预训练模型 VGG16 作为卷积基&#xff0c;并在其之上添加了全连接…

AI绘画Stable Diffusion进阶使用

本文讲解&#xff0c;模型底模&#xff0c;VAE美化模型&#xff0c;Lora模型&#xff0c;hypernetwork。 文本Stable Diffusion 简称sd 欢迎关注 使用模型 C站&#xff1a;https://civitai.com/ huggingface&#xff1a;https://huggingface.co/models?pipeline_tagtext-to-…

细说JavaScript事件处理(JavaScript事件处理详解)

js语言的一个特色和就是它的动态性&#xff0c;即一时间驱动的方式对用户输入作出反应而不需要依赖服务器端程序。事件是指人机交互的结果&#xff0c;如鼠标移动、点击按钮、在表单中输入数据或载入新的Web洁面等。 一、什么是事件 1、事件类型 1.1、事件源 1.2、事件处理…