springboot集成elasticSearch

前言

本人目前用的elasticSearch是8.12.2的版本,springboot用的版本是2.6.2的版本,在集成的时候,出现

maven依赖

这个问题,解决办法升级springboot的版本到3.0,降低elasticSearch的版本,目前由于项目需要,暂时降低版本,但记录下本次尝试的过程

xml 复制代码
<!--    <dependency>-->
<!--      <groupId>org.elasticsearch.client</groupId>-->
<!--      <artifactId>elasticsearch-rest-client</artifactId>-->
<!--      <version>8.12.2</version>-->
<!--    </dependency>-->

    <dependency>
      <groupId>co.elastic.clients</groupId>
      <artifactId>elasticsearch-java</artifactId>
      <version>8.12.2</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.17.0</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish</groupId>
      <artifactId>jakarta.json</artifactId>
      <version>2.0.1</version>
    </dependency>

配置

java 复制代码
package org.example.es;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ElasticsearchConfig {

    public static String url;

    public static String apiKey;



    @Value("${elasticsearch.url:localhost:9200}")
    public void setUrl(String url) {
        this.url = url;
    }


    @Value("${elasticsearch.apiKey:ZTNHZ1RwWUJtajlYVkszdmJ3YUo6ZXd4bUpGOHVUdnFvWmNEZ3JjWlgxdw==}")
    public void setApiKey(String apiKey) {
        ElasticsearchConfig.apiKey = apiKey;
    }
}
java 复制代码
package org.example.es;

import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.rest_client.RestClientOptions;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Header;
import org.apache.http.HttpHost;
import org.apache.http.message.BasicHeader;
import org.elasticsearch.client.*;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class EsClient {

    private static ElasticsearchClient client;

    public  ElasticsearchClient getInstance() {

        if(client == null) {
            synchronized (this)  {

                RestClient restClient = RestClient
                        .builder(HttpHost.create(ElasticsearchConfig.url))
                        .setDefaultHeaders(new Header[]{
                                new BasicHeader("Authorization", "ApiKey " + ElasticsearchConfig.apiKey)
                        })
                        .build();

                ElasticsearchTransport transport = new RestClientTransport(
                        restClient, new JacksonJsonpMapper());

                client = new ElasticsearchClient(transport);
                return client;
            }

        }
        return client;
    }


}
java 复制代码
@Autowired
private EsClient esClient;


@PostMapping(value = "/esTest")
public void esTest() {

    ElasticsearchClient instance = esClient.getInstance();
    try {
        CreateIndexResponse createIndexResponse = instance.indices().create(c ->
                c.index("index_user_info")
                        .settings(s -> s.numberOfShards("1").numberOfReplicas("3"))
                        .mappings(m -> m.properties("id", p -> p.text(d -> d))
                                .properties("name", p -> p.text(t -> t.analyzer("ik_max_word")))
                                .properties("height", p -> p.double_(d -> d))
                                .properties("createTime", p -> p.date(d -> d.format("yyyy-MM-dd")))
                        )
        );
        boolean acknowledged = createIndexResponse.acknowledged();
        log.info("创建index_user_info索引返回结果:{}",acknowledged);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }


}
相关推荐
武子康5 分钟前
大数据-210 如何在Scikit-Learn中实现逻辑回归及正则化详解(L1与L2)
大数据·后端·机器学习
Coder_Boy_14 分钟前
Spring Boot 事务回滚异常 UnexpectedRollbackException 详解(常见问题集合)
java·spring boot·后端
风象南16 分钟前
SpringBoot 实现网络限速
后端
源代码•宸21 分钟前
Golang语法进阶(定时器)
开发语言·经验分享·后端·算法·golang·timer·ticker
计算机学姐24 分钟前
基于SpringBoot的汽车租赁系统【个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·spring·汽车·推荐算法
好好研究28 分钟前
SpringBoot小案例打包执行流程
java·spring boot·后端
BingoGo29 分钟前
免费可商用商业级管理后台 CatchAdmin V5 正式发布 插件化与开发效率的全面提升
vue.js·后端·php
IT_陈寒40 分钟前
SpringBoot 3.0实战:这5个新特性让你的开发效率提升50%
前端·人工智能·后端
ling-4541 分钟前
ssm-day07 springboot3、Mybatis-Plus、springboot实战
java·spring boot·后端
a程序小傲1 小时前
得物Java面试被问:边缘计算的数据同步和计算卸载
java·开发语言·数据库·后端·面试·golang·边缘计算