You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot连接Elasticsearch 6.2.3配置方案求助

我来给你一套亲测可行的Spring Boot 2.0.1连接Elasticsearch 6.2.3配置方案,一步步梳理清楚:

Spring Boot 2.0.1 连接 Elasticsearch 6.2.3 完整配置指南

一、Pom.xml 依赖配置

你当前的依赖版本是完全适配的——Spring Boot 2.0.1.RELEASE的spring-boot-starter-data-elasticsearch默认对应Elasticsearch 6.2.x系列,和你的6.2.3版本兼容性拉满,直接用就行:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    <version>2.0.1.RELEASE</version>
</dependency>

二、两种连接方式任选

方式1:手动配置TransportClient(适合自定义需求)

如果你需要更灵活的客户端配置,写个配置类手动创建TransportClient实例:

import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.net.InetAddress;
import java.net.UnknownHostException;

@Configuration
public class ElasticsearchConfig {

    @Bean
    public TransportClient transportClient() throws UnknownHostException {
        // 匹配你的ES集群名称,默认是elasticsearch
        Settings settings = Settings.builder()
                .put("cluster.name", "elasticsearch")
                .put("client.transport.sniff", true) // 开启自动嗅探集群节点,动态感知节点变化
                .build();

        // 添加ES节点地址,TCP端口默认是9300,多节点可重复add
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("127.0.0.1"), 9300));

        return client;
    }
}

方式2:用Spring Boot自动配置(更省心)

不想写配置类的话,直接在application.properties里加配置,Spring会自动帮你初始化客户端:

# Elasticsearch集群配置
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
# 开启ES仓库自动扫描
spring.data.elasticsearch.repositories.enabled=true

三、实体类与索引映射

创建一个和ES索引对应的实体类,用注解绑定索引、类型信息(ES 6.x要求一个索引只能有一个类型,推荐用_doc):

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Document(indexName = "user", type = "_doc", shards = 1, replicas = 0)
public class User {
    @Id
    private String id;
    private String name;
    private Integer age;
    private String email;

    // 省略getter、setter、构造方法
}

四、Repository层快速实现CRUD

继承ElasticsearchRepository,Spring Data会自动帮你实现基础CRUD,还能自定义查询方法:

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import java.util.List;

public interface UserRepository extends ElasticsearchRepository<User, String> {
    // 自定义查询方法,Spring Data会自动解析实现
    List<User> findByName(String name);
}

五、业务层调用示例

在Service里注入Repository或者TransportClient,直接操作ES:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    // 保存用户到ES
    public User saveUser(User user) {
        return userRepository.save(user);
    }

    // 根据姓名查询用户
    public List<User> getUserByName(String name) {
        return userRepository.findByName(name);
    }
}

注意事项

  • 确保ES集群的cluster.name和配置里的完全一致,否则连接会失败
  • 开放ES的9300端口,防火墙不要拦截TCP连接
  • ES 6.x版本不要在一个索引下创建多个类型,遵循官方规范用_doc作为类型名

内容的提问来源于stack exchange,提问作者Michael Draper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:17:58