当前位置: 首页 > 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,旧项目迁移参考官方迁移指南
http://www.dtcms.com/a/203508.html

相关文章:

  • 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>实现多属性排序
  • 数学建模,机器决策人建模
  • 空调系统虚拟标定技术:新能源汽车能效优化的革命性突破
  • IntelliJ IDEA 接入 DeepSeek帮助你更好编码
  • 目标检测:YOLO 模型详解
  • VLM-MPC:自动驾驶中模型预测控制器增强视觉-语言模型
  • 新美业门店模式vs传统美业门店模式 调研报告
  • PHP学习笔记(八)
  • 【 Redis | 实战篇 扩展 】
  • 用户栈的高效解析逻辑
  • EtherNet/IP机柜内解决方案在医疗控制中心智能化的应用潜能和方向分析
  • springMVC拦截器,拦截器拦截策略设置