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


}
相关推荐
mldong2 小时前
C# 开发者也有自己的轻量工作流引擎了:NuGet 装包,5 分钟跑通一条审批流
后端·c#·.net
爱学堂IT分享5 小时前
鹤翔老师pmp项目管理培训认证考试课 (直播录播题库送学时证明)【共58课时】-51CTO学堂
后端
王的宝库5 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
码事漫谈6 小时前
类型即世界:一个 C++ 程序员的本体论入门
后端
Rain的Java大神之路6 小时前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
IT_陈寒8 小时前
Python的多线程居然是个假把式?搞清GIL让我少熬三天夜
前端·人工智能·后端
明月_清风8 小时前
位图与布隆过滤器:海量数据下的"存在性判断"艺术
前端·后端·算法
明月_清风8 小时前
Hash 表从入门到精通:Go 实战与工程细节
前端·后端·算法
考虑考虑9 小时前
ElasticSearch索引命令
运维·后端·elasticsearch
玉宇夕落10 小时前
背单词项目一:融会贯通:从零构建"单词大师"后台——Next.js + Supabase + Drizzle 全栈开发实战
后端