Elasticsearch简单集成java框架方式。

Elasticsearch 在 Java 中最常用的客户端是什么?如何初始化一个 RestHighLevelClient?如何用 Spring Boot 快速集成 Elasticsearch?Spring Data Elasticsearch 如何定义实体类与索引的映射?

  1. 最常用的 Java 客户端

    目前官方推荐使用新的 Java API Client (替代旧的 RestHighLevelClient),这是 Elasticsearch 官方维护的最新客户端,支持 7.17+ 版本。旧项目可能仍在使用已被废弃的 High Level REST Client。

    但是国内相对而言,RestHighLevelClient还是使用比较多的,就跟jdk8一个道理。

  2. 初始化 Java API Client(推荐方式)

java 复制代码
// 添加 Maven 依赖
<dependency>
    <groupId>co.elastic.clients</groupId>
    <artifactId>elasticsearch-java</artifactId>
    <version>8.13.4</version>
</dependency>

// 初始化客户端
RestClient restClient = RestClient.builder(
    new HttpHost("localhost", 9200)).build();

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

ElasticsearchClient client = new ElasticsearchClient(transport);
  1. Spring Boot 快速集成
properties 复制代码
# application.properties
spring.elasticsearch.uris=http://localhost:9200
spring.elasticsearch.connection-timeout=1s
spring.elasticsearch.socket-timeout=30s
java 复制代码
@Configuration
public class ElasticsearchConfig {
    @Bean
    public ElasticsearchClient elasticsearchClient(RestClientBuilder restClientBuilder) {
        return new ElasticsearchClient(
            new RestClientTransport(restClientBuilder.build(), new JacksonJsonpMapper())
        );
    }
}
  1. 实体类映射示例
java 复制代码
@Document(indexName = "products")
public class Product {
    @Id
    private String id;
    
    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String name;
    
    @Field(type = FieldType.Double)
    private Double price;
    
    // getters/setters
}
  1. Repository 接口定义
java 复制代码
public interface ProductRepository extends ElasticsearchRepository<Product, String> {
    List<Product> findByName(String name);
    
    @Query("{\"match\": {\"name\": \"?0\"}}")
    Page<Product> searchByName(String name, Pageable pageable);
}

版本注意事项

  • Spring Boot 3.x 对应 Spring Data Elasticsearch 5.x
  • 需要保持 Elasticsearch 服务端版本与客户端版本一致
  • 新项目建议使用新的 Java API Client,旧项目迁移参考官方迁移指南
相关推荐
linweidong20 小时前
C++ 中避免悬挂引用的企业策略有哪些?
java·jvm·c++
用户937611475816120 小时前
并发编程三大特性
java·后端
阿在在20 小时前
Spring 系列(二):加载 BeanDefinition 的几种方式
java·后端·spring
小当家.10520 小时前
Maven与Gradle完整对比指南:构建工具深度解析
java·gradle·maven
neoooo20 小时前
🍃Spring Boot 多模块项目中 Parent / BOM / Starter 的正确分工
java·后端·架构
黄金贼贼20 小时前
2026最新java单元测试json校验器
java·单元测试·json
菜鸟的迷茫20 小时前
为了防雪崩加了限流,结果入口先挂了
java·后端·架构
荒诞硬汉20 小时前
数组常见算法
java·数据结构·算法
悟空码字20 小时前
SpringBoot整合MongoDB,性能提升,优化实践
java·spring boot·后端
samLi062020 小时前
【数据集】中国杰出青年名单数据集(1994-2024年)
大数据