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

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,旧项目迁移参考官方迁移指南

相关文章:

  • StepX-Edit:一个通用图像编辑框架——论文阅读笔记
  • 力扣热题100,力扣148.排序链表力扣.26找出字符串中第一个匹配项的下标力扣146.LRU缓存序列管理器
  • Redis应用--缓存
  • 【Unity 如何使用 Mixamo下载免费模型/动画资源】Mixamo 结合在 Unity 中的实现(Animtor动画系统,完整配置以及效果展示)
  • 八: 人工神经元/感知机 算法
  • 智能驾驶中的深度学习:基于卷积神经网络的车道线检测
  • 【深度学习】多目标融合算法(六):渐进式分层提取模型PLE(Progressive Layered Extraction)
  • 【UE5】环形菜单教程
  • CESM2.0 全流程解析:从环境搭建到多模块耦合模拟
  • ElasticSearch各种查询语法示例
  • 使用 Spring AI Alibaba 集成阿里云百炼大模型应用
  • Python爬虫(32)Python爬虫高阶:动态页面处理与Scrapy+Selenium+BeautifulSoup分布式架构深度解析实战
  • 华为云Flexus+DeepSeek征文|Flexus云服务器Dify-LLM资源部署极致体验Agent
  • PyTorch的基本操作
  • RK3588 RKNN ResNet50推理测试
  • NFM算法解析:如何用神经网络增强因子分解机的特征交互能力?
  • 138. Copy List with Random Pointer
  • Axure设计之带分页的穿梭框原型
  • 在C#中对List<T>实现多属性排序
  • 数学建模,机器决策人建模
  • 怎么自己做一个公众号/厦门百度seo点击软件
  • 广州网站建设/淘宝宝贝关键词排名查询工具
  • 网站结构是什么 怎么做/360手机优化大师安卓版
  • 网站建设工资/十大计算机培训学校
  • 做招聘的网站/怎么网上推广自己的产品
  • 做网站几个步骤/百度推广服务费一年多少钱