当前位置: 代码网 > it编程>编程语言>Java > SpringBoot整合(ES)ElasticSearch7.8实践

SpringBoot整合(ES)ElasticSearch7.8实践

2025年07月16日 Java 我要评论
springboot整合elasticsearch7.8所有的教程都参考于官方文档,这里给大家说明文档位置,搜索elasticsearch官网的docs界面,找到elasticsearch clien

springboot整合elasticsearch7.8

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

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

添加依赖

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

<dependency>
    <groupid>org.elasticsearch.client</groupid>
    <artifactid>elasticsearch-rest-high-level-client</artifactid>
    <version>7.8.1</version>
</dependency>

初始化

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

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

创建springboot项目

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

创建配置类

@configuration
public class elasticconfig {

    @bean
    public resthighlevelclient getresthighlevelclient(){
        resthighlevelclient client = new resthighlevelclient(
                //如果是集群再配置多个
                restclient.builder(new httphost("127.0.0.1",9200,"http"))
        );

        return client;
    }
}

测试案例

创建索引

查看官方手册

可以看到很多的api,我们试试索引api,点击index apis

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

我们直接在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去查看索引创建情况

获取索引

我们也可以直接通过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();
        }

    }

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

1、查看官方案例

2、创建实体类

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

@data
@noargsconstructor
@allargsconstructor
public class user {
    private string username;
    private integer age;
}

3、测试方法

 /**
     * 测试对象的操作
     */
    @test
    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);
            //获取索引内容看看
            getrequest getrequest = new getrequest("posts","1");
            getresponse getresponse = client.get(getrequest, requestoptions.default);
            system.out.println(getresponse);
        } catch (ioexception e) {
            e.printstacktrace();
        }

    }

批量插入数据

真实的项目一般都是大批量的插入数据,比如从数据库中、消息队列或者缓存中获取数据插入等等,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();
        }

    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com