该版本仍在开发中,尚未被视为稳定。对于最新稳定版本,请使用Spring Data Elasticsearch 5.5.5spring-doc.cadn.net.cn

从4.4.x升级到5.0.x

本节介绍了从4.4.x到5.0.x版本的重大变更,以及如何用新引入的功能替代被移除的功能。spring-doc.cadn.net.cn

弃用

自定义痕迹层级记录

通过设置属性进行日志记录logging.level.org.springframework.data.elasticsearch.client.WIRE=trace现已被弃用的 ElasticsearchRest客户端提供了更好的解决方案,可以通过设置 的日志水平来激活示 踪包裹转为“trace”。spring-doc.cadn.net.cn

org.springframework.data.elasticsearch.client.erhlc

请参见包变更,该包中的所有类都已被弃用,默认客户端实现基于 Elasticsearch 的新 Java 客户端,详见 New Elasticsearch 客户端spring-doc.cadn.net.cn

废弃代码的移除

DateFormat.noneDateFormat.custom自4.2版本起已被弃用并被移除。spring-doc.cadn.net.cn

的性质@Document自4.2版本以来被淘汰的部分已被移除。 使用该@Settings这些注释。spring-doc.cadn.net.cn

@DynamicMapping@DynamicMappingValue已被移除。 用@Document.动态@Field.动态相反。spring-doc.cadn.net.cn

变更

取消废弃呼叫

建议作调用接口已被移除

搜索作响应式搜索作已弃用使用 Elasticsearch 类作为参数的调用。 这些 API 现已被移除,因此对 Elasticsearch 类的依赖也被清除。spring-doc.cadn.net.cn

包装变更

所有使用或依赖已弃用 Elasticsearch 的类RestHighLevel客户端已被移入包裹org.springframework.data.elasticsearch.client.erhlc. 通过这一变化,我们现在明确区分了使用旧版 Elasticsearch 库的代码、使用新 Elasticsearch 客户端的代码以及独立于客户端实现的代码。 此外,之前提供的响应式实现也被移至此处,因为该实现包含了从 Elasticsearch 库复制和调整的代码。spring-doc.cadn.net.cn

如果你正在使用弹性搜索Rest模板直接而非弹性搜索作界面:你还需要调整导入内容。spring-doc.cadn.net.cn

在与NativeSearchQuery你需要切换到那种原生查询类,可以取一个查询实例来自新的 Elasticsearch 客户端库。 你会在测试代码中找到很多例子。spring-doc.cadn.net.cn

转换为 Java 17 记录

以下类别已被转换为记录,你可能需要调整取取方法的使用,从getProp()prop():spring-doc.cadn.net.cn

新的 HttpHeaders 类

直到4.4版本之前,客户端配置使用HttpHeaders来自org.springframework:spring-web项目。 这会引入对该人工物的依赖。 不使用 Spring-Web 的用户会遇到错误,因为找不到该类。spring-doc.cadn.net.cn

在5.0版本中,我们引入了自己的版本HttpHeaders配置客户端。spring-doc.cadn.net.cn

所以如果你在客户端配置中使用了标头,你需要替换org.springframework.http.HttpHttpHeadersorg.springframework.data.elasticsearch.support.HttpHeaders.spring-doc.cadn.net.cn

提示:你可以通过一个org.springframework.http .HttpHeaders前往addAll()方法org.springframework.data.elasticsearch.support.HttpHeaders.spring-doc.cadn.net.cn

新的 Elasticsearch 客户端

Spring Data Elasticsearch 现在使用新的Elasticsearch客户端并且已经不再使用之前的RestHighLevel客户端.spring-doc.cadn.net.cn

祈使式样式配置

为了配置 Spring Data Elasticsearch 以使用新客户端,需要创建一个从org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration:spring-doc.cadn.net.cn

@Configuration
public class NewRestClientConfig extends ElasticsearchConfiguration {

	@Override
	public ClientConfiguration clientConfiguration() {
		return ClientConfiguration.builder() //
			.connectedTo("localhost:9200") //
			.build();
	}
}

配置方式与旧客户端相同,但不再需要创建超过配置豆的部分。 通过这种配置,以下豆子将在春季应用环境中可用:spring-doc.cadn.net.cn

  • 一个Rest客户端Bean,那是配置好的低级Rest客户端该系统由Elasticsearch客户端使用spring-doc.cadn.net.cn

  • Elasticsearch客户端Bean,这是使用新客户端Rest客户端spring-doc.cadn.net.cn

  • 弹性搜索作豆子,可用 elasticsearchOperationselasticsearchTemplate 这两个豆子名称,这使用Elasticsearch客户端spring-doc.cadn.net.cn

响应式配置

在响应式环境中使用新客户端的唯一区别在于从哪个类派生配置:spring-doc.cadn.net.cn

@Configuration
public class NewRestClientConfig extends ReactiveElasticsearchConfiguration {

	@Override
	public ClientConfiguration clientConfiguration() {
		return ClientConfiguration.builder() //
			.connectedTo("localhost:9200") //
			.build();
	}
}

通过这种配置,以下豆子将在春季应用环境中可用:spring-doc.cadn.net.cn

  • 一个Rest客户端Bean,那是配置好的低级Rest客户端该系统由Elasticsearch客户端使用spring-doc.cadn.net.cn

  • ReactiveElasticsearchClientBean,这是新的响应式客户端,它使用Rest客户端spring-doc.cadn.net.cn

  • 响应式弹性搜索作豆子,可用豆子名称 reactiveElasticSearchOperationsreactiveElasticsearchTemplate,使用ReactiveElasticsearchClientspring-doc.cadn.net.cn

还想用旧客户端吗?

旧的已废弃RestHighLevel客户端仍然可以使用,但你需要在应用中明确添加依赖,因为 Spring Data Elasticsearch 不再自动拉入:spring-doc.cadn.net.cn

<!-- include the RHLC, specify version explicitly	-->
<dependency>
	<groupId>org.elasticsearch.client</groupId>
	<artifactId>elasticsearch-rest-high-level-client</artifactId>
	<version>7.17.5</version>
	<exclusions>
		<exclusion>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>

务必明确指定版本 7.17.6,否则 maven 会解析到 8.5.0,而这个版本并不存在。spring-doc.cadn.net.cn