当前位置: 首页 > web >正文

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(推荐方式)

// 添加 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 快速集成
# application.properties
spring.elasticsearch.uris=http://localhost:9200
spring.elasticsearch.connection-timeout=1s
spring.elasticsearch.socket-timeout=30s
@Configuration
public class ElasticsearchConfig {@Beanpublic ElasticsearchClient elasticsearchClient(RestClientBuilder restClientBuilder) {return new ElasticsearchClient(new RestClientTransport(restClientBuilder.build(), new JacksonJsonpMapper()));}
}
  1. 实体类映射示例
@Document(indexName = "products")
public class Product {@Idprivate String id;@Field(type = FieldType.Text, analyzer = "ik_max_word")private String name;@Field(type = FieldType.Double)private Double price;// getters/setters
}
  1. Repository 接口定义
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,旧项目迁移参考官方迁移指南
http://www.xdnf.cn/news/7929.html

相关文章:

  • Python Lambda 表达式
  • Python面试题
  • PyTorch进阶实战指南:02分布式训练深度优化
  • 数据集分享 | Sard(无人机搜救)数据集
  • 如何用数据可视化提升你的决策力?
  • 【GESP真题解析】第 6 集 GESP 二级 2023 年 6 月编程题 1:找素数
  • SLAM文献之-SuperOdometry: Lightweight LiDAR-inertial Odometry and Mapping
  • 计算机组成原理第2章(竟成)
  • 态度与价值的思考-250521
  • C++23 新特性:允许 std::stack 与 std::queue 从迭代器对构造 (P1425R4)
  • web.py使用时报错AttributeError: No template named image_window
  • 推荐个Github,Docker免费的加速网站
  • pcie gen4,gen5,gen6 新增特性说明
  • Linux虚拟文件系统(2)
  • TASK04【Datawhale 组队学习】构建RAG应用
  • kafka配置SASL_PLAINTEXT简单认证
  • ElasticSearch安装
  • 学习 Android(十)Fragment的生命周期
  • (6)python爬虫--selenium
  • Java面试实录:从JVM调优到Spring Cloud实践
  • Flask-SQLAlchemy核心概念:模型类与数据库表、类属性与表字段、外键与关系映射
  • 计算机视觉与深度学习 | Python实现CEEMDAN-ISOS-VMD-GRU-ARIMA时间序列预测(完整源码和数据)
  • Vulkan 动态渲染
  • npm、pnpm、yarn 各自优劣深度剖析
  • [CSS3]百分比布局
  • Qt初识.
  • 乐视系列玩机------乐视pro3 刷写第三方资源操作步骤 乐视系列机型通用刷写第三方步骤
  • k8s面试题-ingress
  • Rust 学习笔记:泛型
  • Kubernetes中runnable接口的深度解析与应用