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);
    }


}
相关推荐
皮皮林5514 分钟前
Java 导出 Excel 利器:JXLS
后端
吃饱了得干活4 分钟前
从 LIKE 查询到毫秒级搜索:Elasticsearch 核心原理与 Java 实战
后端·elasticsearch
tianbin9112 小时前
大模型训练与推理:API中转站在企业AI落地中的隐藏价值
大数据·后端·ai
打工仔折腾 AI3 小时前
用 Dashlet 把极空间 NAS 服务入口整理成统一导航首页的实践
java·开发语言·人工智能·后端·python·rpc·ai agent 实战
环境栈笔记3 小时前
指纹浏览器 WebRTC 怎么设置?从 ICE 候选、代理出口到功能验证
前端·人工智能·后端·自动化
一只小猪妖4 小时前
分布式唯一 性ID生成方法
后端
小蒜学长4 小时前
微信小程序-高校自习室管理系统(代码+数据库+LW)
java·spring boot·后端·微信小程序·自习室管理
M1A14 小时前
告别代码风格之争:在 VS Code 中用 Black 一键格式化 Python
后端
IT_陈寒4 小时前
Python多进程共享变量这个坑,差点让我加班到凌晨
前端·人工智能·后端