SpringBoot整合(ES)ElasticSearch7.8实践

2025-07-16 18:50

本文主要是介绍SpringBoot整合(ES)ElasticSearch7.8实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《SpringBoot整合(ES)ElasticSearch7.8实践》本文详细介绍了SpringBoot整合ElasticSearch7.8的教程,涵盖依赖添加、客户端初始化、索引创建与获取、批量插...

SpringBoot整合ElasticSearch7.8

所有的教程都参考于官方文档,这里给大家说明文档位置,搜索elasticsearch官网的Docs界面,找到ElasticSearch Client这个选项,图中也有位置,根据图中的位置找就行了。

前提是要安装好ES,挺简单的,这里就不说了。

添加依赖

根据官方文档导入对应架包

SpringBoot整合(ES)ElasticSearch7.8实践

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.8.1</version>
</dependency>

初始化

SpringBoot整合(ES)ElasticSearch7.8实践

RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http"),
                new HttpHost("localhost", 9201, "http")));
//使用完后关闭资源
client.close();

所有的方法都在RestHighLevelClient类中了,直接去使用即可

创建SpringBoot项目

SpringBoot中已经有了starter,直接选择NoSQL里面导入启动依赖就可以了

SpringBoot整合(ES)ElasticSearch7.8实践SpringBoot整合(ES)ElasticSearch7.8实践

创建配置类

@Configuration
public class ElasticConfig {

    @Bean
    public RestHighLevelClient getRestHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                //如果是集群再配置多个
                RestClient.builder(new HttpHost("127.0.0.1",9200,"http"))
        );

        return client;
    }
}

测试案例

创建索引

查看官方手册

SpringBoot整合(ES)ElasticSearch7.8实践

可以看到很多的API,我们试试索引API,点击Index APIs

SpringBoot整合(ES)ElasticSearch7.8实践

第一个是创建索引的简单方式,创建完成后还要发送指令过去,发送方式拉到最下就可以看到一个同步和异步的发送,我们使用同步就行了。

SpringBoot整合(ES)ElasticSearch7.8实践

我们直接在test目录测试下

@SpringBootTest
class ElasticsearchDemoApplicationTests {

    @Test
    void contextLoads() {
    }

    @Qualifier("getRestHighLevelClient")
    @Autowired
    private RestHighLevelClient client;

    /**
     * 创建索引
     */
    @Test
    public void test1(){
        //注意索引名要小写
        CreateIndexRequest request = new CreateIndexRequest("springboot_es_test1");
        try {
            CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

如果执行不报错,那就可以打开可视化工具查看或者kibana去查看索引创建情况

SpringBoot整合(ES)ElasticSearch7.8实践

获取索引

我们也可以直接通过Java代码获取索引去检测,这个代码也是可以从官方获取的

 /**
     * 获取索引
     */
    @Test
    public void test2(){
        GetIndexRequest request = new GetIndexRequest("springboot_es_test1");
        try {
            boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
            System.out.println(exists);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

SpringBoot整合(ES)ElasticSearch7.8实践

创建索引并加入对象的属性和值

1、查看官方案例

SpringBoot整合(ES)ElasticSearch7.8实践

2、创建实体类

这里使用的lombok,不会使用的小伙伴手动添加get/set全参构造和无参构造方法

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String username;
    private Integer age;
}

3、测试方法

 /**
     * 测试对象的操作
     */
    @TNcSdSODoest
    public void test3(){
        //创建对象
        User user = new User("测试", 13);

        IndexRequest request = new IndexRequest("posts");
        request.id("1");
        //对象转为json
        request.source(JSON.toJSON(user), XContentType.JSON);

        try {
            //发送
            IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
 www.chinasem.cn           //获取索引内容看看
            GetRequest getRequest = new GetRequest("posts","1");
            GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
            System.out.println(getResponse);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

SpringBoot整合(ES)ElasticSearch7.8实践

批量插入数据

真实的项目一般都是大批量的插入数据,比如从数据库中、消息队列或者缓存中获取数据插入等等,ES也提供了批量插入的方法,BulkRequest类。

    /**
     * 设置批量插入
     */
    @Test
    public void test4(){
        //创建批量请求
        BulkRequest bulkRequest = new BulkRequest();
        //超时时间
        bulkRequest.timeout("10s");
        //模拟数据
        ArrayList<User> users = new ArrayList<>();
        users.add(new User("张1",1));
        users.add(new User("张2",2));
        users.add(new User("张3",3));
        users.add(new User("张4",4));
        int i=0 ;
        //批量插入
        for(User user:users){
            bulkRequest.add(
                    new IndexRequest("test2")
                            .id(""+i++)
                            .source(JSON.toJSONString(user), XContentType.JSON)
            );
        }
        try {
            //发送请求
            BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
            //获取是否失败标志
            System.out.println(bulk.hasFailures());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.chinasem.cn)android

这篇关于SpringBoot整合(ES)ElasticSearch7.8实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155401

相关文章

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避

SpringBoot整合Dubbo+ZK注册失败的坑及解决

《SpringBoot整合Dubbo+ZK注册失败的坑及解决》使用Dubbo框架时,需在公共pom添加依赖,启动类加@EnableDubbo,实现类用@DubboService替代@Service,配... 目录1.先看下公共的pom(maven创建的pom工程)2.启动类上加@EnableDubbo3.实

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完