三.SpringBoot整合Elasticsearch

本文介绍了如何在SpringBoot项目中使用Elasticsearch-Rest-Client进行ES操作,包括引入依赖、解决版本冲突、配置连接、编写测试类以及数据保存示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

我们整合es直接给es发请求就可以了,但是现在有很多方式去调用es的接口,那都有那些呢?

一.java调用es的方式和工具

访问es端口访问方式使用工具缺点
9300TCPtransport-api.jar不适配es版本,es 8.0之后弃用。
9200HTTPJestClient非官方,对应es版本更新慢。
9200HTTPRestTemplate模拟发送http请求,但是很多请求需要自己封装。
9200HTTPHttpClient模拟发送http请求,但是很多请求需要自己封装。
9200HTTPElasticsearch-Rest-Client官方RestClient,封装了es的操作,API层次分明,上手简单。

二.java集成Elasticsearch-Rest-Client

Elasticsearch-Rest-Client官方文档

1.引入pom

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

2.导入版本不一致问题

比如你想导入 7.3.1版本的,但是你导入之后发现不是7.3.1版本的。
原因: 因为springboot默认对Elasticsearch版本进行了引入。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.编写配置类

@Configuration
public class EsConfig {
	
	//发送请求时的请求设置项(全局通用)
    public static final RequestOptions COMMON_OPTIONS;
    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
        //通用设置
//        builder.addHeader("Authorization", "Bearer " + TOKEN);
//        builder.setHttpAsyncResponseConsumerFactory(
//                new HttpAsyncResponseConsumerFactory
//                        .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024));
        COMMON_OPTIONS = builder.build();
    }
	
	//注入
    @Bean
    public RestHighLevelClient config(){
        RestClientBuilder builder = null;
        //es的ip、访问的端口号、网络协议
        builder = RestClient.builder(new HttpHost("127.0.0.1",9200,"http"));
        RestHighLevelClient client = new RestHighLevelClient(builder);
        return client;
    }
}

4.测试类

@SpringBootTest
@RunWith(SpringRunner.class)
public class test {

    @Autowired
    RestHighLevelClient restClient;

	//测试从java保存数据到es
    @Test
    public void testEs() throws IOException {
       IndexRequest indexRequest = new IndexRequest("ikun");
        indexRequest.id("1");
        Kunkun kunkun = new Kunkun();
        kunkun.setJineng("唱跳rap篮球");
        kunkun.setName("小black子");
        //把对象转为json字符串
        String s = JSON.toJSONString(kunkun);
        //保存的数据
        indexRequest.source(s, XContentType.JSON);
        //执行保存的操作(同步操作,文档里面有写异步请求)
        IndexResponse index = restClient.index(indexRequest, EsConfig.COMMON_OPTIONS);
    }

    @Data
    class Kunkun {
        private String jineng;
        private String name;
    }
}

4.1 执行前

在这里插入图片描述

4.2 执行后

在这里插入图片描述

5.其他篇章

一.Elasticsearch快速入门及使用

二.Elasticsearch进阶

### 整合 ElasticsearchSpring Boot 项目 为了在 Spring Boot 项目中整合 Elasticsearch,需遵循特定的步骤来设置环境并调整配置文件。当使用 `spring-boot-starter-data-elasticsearch` 启动器时,可以通过定义相应的仓库接口轻松地执行 CRUD 操作。 #### 修改 Configuration 文件 对于配置文件而言,推荐采用 YAML 格式的 `application.yml` 来替代传统的 `.properties` 文件形式[^3]。以下是针对 Elasticsearch 的基本配置实例: ```yaml spring: elasticsearch: rest: uris: http://1xx.xxx.xxx.250:9200 ``` 此片段指定了连接到 Elasticsearch 实例所需的 URI 地址。确保替换示例 IP 和端口号为实际运行 ES 节点的位置信息。 #### 创建 Repository 接口 接着,在应用程序内创建一个继承自 `ElasticsearchRepository<T,ID>` 或者更通用版本 `ElasticsearchCrudRepository<T,ID>` 的接口用于操作指定类型的文档记录[^1][^2]。这里 T 表示映射至索引内的实体类;ID 是唯一标识符的数据类型(通常是字符串或整数)。例如: ```java package com.pro.tools.elasticsearch.dao; import com.pro.tools.elasticsearch.vo.Message; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; public interface MessageRepository extends ElasticsearchRepository<Message, String> { } ``` 上述代码展示了如何声明一个名为 `MessageRepository` 的接口以处理消息类型的持久化逻辑。 #### 更新 data.elasticsearch 字段 如果要更改与 `data.elasticsearch` 相关的具体字段,则取决于具体的应用场景以及所使用的实体模型结构。通常情况下,这些属性会在对应的 Java 类里通过注解方式标注出来,比如利用 `@Document(indexName="messages")` 设置索引名称,或是借助 `@Field(type=FieldType.Text)` 定义字段特性等。因此,任何关于修改此类元数据的操作都应集中在实体 Bean 上完成而不是直接改动配置项本身。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱穿背带裤的馫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值