从 4.4.x 升级到 5.0.x

本节介绍从版本 4.4.x 到 5.0.x 的重大更改,以及如何将已删除的功能替换为新引入的功能。spring-doc.cn

弃用

自定义跟踪记录级别日志记录

通过设置属性进行日志记录现已弃用,Elasticsearch 提供了更好的解决方案,可以通过将包的日志记录级别设置为 “trace” 来激活该解决方案。logging.level.org.springframework.data.elasticsearch.client.WIRE=traceRestClienttracerspring-doc.cn

org.springframework.data.elasticsearch.client.erhlc

请参阅包更改,此包中的所有类都已弃用,因为要使用的默认客户端实现是基于 Elasticsearch 的新 Java 客户端的实现,请参阅新的 Elasticsearch 客户端spring-doc.cn

删除已弃用的代码

DateFormat.none自 4.2 版起已弃用并已删除。DateFormat.customspring-doc.cn

自 4.2 以来已弃用的属性已被删除。 对这些使用注释。@Document@Settingsspring-doc.cn

@DynamicMapping并已被删除。 使用 or 代替。@DynamicMappingValue@Document.dynamic@Field.dynamicspring-doc.cn

重大更改

删除已弃用的调用

已删除操作界面中的 SUGGEST 调用

两者都弃用了使用 Elasticsearch 类作为参数的调用。 这些 API 现在已被删除,因此这些 API 中对 Elasticsearch 类的依赖性也已清理。SearchOperationsReactiveSearchOperationsspring-doc.cn

套餐更改

所有使用或依赖于已弃用的 Elasticsearch 的类都已移动到包 中。 通过此更改,我们现在明确区分了使用旧的已弃用 Elasticsearch 库的代码、使用新 Elasticsearch 客户端的代码以及独立于客户端实现的代码。 此外,到目前为止提供的反应式实现已移至此处,因为此实现包含从 Elasticsearch 库复制和改编的代码。RestHighLevelClientorg.springframework.data.elasticsearch.client.erhlcspring-doc.cn

如果您直接使用而不是界面,则还需要调整导入。ElasticsearchRestTemplateElasticsearchOperationsspring-doc.cn

使用该类时,您需要切换到该类,该类可以采用来自新 Elasticsearch 客户端库的实例。 您将在测试代码中找到大量示例。NativeSearchQueryNativeQueryQueryspring-doc.cn

转换为 Java 17 条记录

以下类已转换为 ,您可能需要将 getter 方法的使用从 调整为 :RecordgetProp()prop()spring-doc.cn

  • org.springframework.data.elasticsearch.core.AbstractReactiveElasticsearchTemplate.IndexResponseMetaDataspring-doc.cn

  • org.springframework.data.elasticsearch.core.ActiveShardCountspring-doc.cn

  • org.springframework.data.elasticsearch.support.Versionspring-doc.cn

  • org.springframework.data.elasticsearch.support.ScoreDocspring-doc.cn

  • org.springframework.data.elasticsearch.core.query.ScriptDataspring-doc.cn

  • org.springframework.data.elasticsearch.core.query.SeqNoPrimaryTermspring-doc.cn

新的 HttpHeaders 类

在版本 4.4 之前,客户端配置使用项目中的类。 这会引入对该构件的依赖关系。 不使用 spring-web 的用户将面临错误,因为找不到此类。HttpHeadersorg.springframework:spring-webspring-doc.cn

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

因此,如果您在客户端配置中使用标头,则需要替换为 .org.springframework.http.HttpHeadersorg.springframework.data.elasticsearch.support.HttpHeadersspring-doc.cn

提示:你可以将 a 传递给 的方法。org.springframework.http .HttpHeadersaddAll()org.springframework.data.elasticsearch.support.HttpHeadersspring-doc.cn

新的 Elasticsearch 客户端

Spring Data Elasticsearch 现在使用新的,并且已弃用以前的 .ElasticsearchClientRestHighLevelClientspring-doc.cn

命令式样式配置

要将 Spring Data Elasticsearch 配置为使用新客户端,必须创建一个派生自以下内容的配置 Bean:org.springframework.data.elasticsearch.client.elc.ElasticsearchConfigurationspring-doc.cn

@Configuration
public class NewRestClientConfig extends ElasticsearchConfiguration {

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

配置以与旧 Client 端相同的方式完成,但不再需要创建除配置 bean 之外的更多内容。 使用此配置,以下 bean 将在 Spring 应用程序上下文中可用:spring-doc.cn

  • 一个 Bean,这是 Elasticsearch 客户端使用的已配置低级别RestClientRestClientspring-doc.cn

  • 一个 Bean 中,这是使用ElasticsearchClientRestClientspring-doc.cn

  • 一个 Bean,其 Bean 名称为 elasticsearchOperationselasticsearchTemplate,它使用ElasticsearchOperationsElasticsearchClientspring-doc.cn

反应式样式配置

要在反应式环境中使用新客户端,唯一的区别是要从中派生配置的类:spring-doc.cn

@Configuration
public class NewRestClientConfig extends ReactiveElasticsearchConfiguration {

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

使用此配置,以下 bean 将在 Spring 应用程序上下文中可用:spring-doc.cn

  • 一个 Bean,这是 Elasticsearch 客户端使用的已配置低级别RestClientRestClientspring-doc.cn

  • 一个 Bean 中,这是使用ReactiveElasticsearchClientRestClientspring-doc.cn

  • 一个 Bean,其 Bean 名称为 reactiveElasticsearchOperationsreactiveElasticsearchTemplate,它使用ReactiveElasticsearchOperationsReactiveElasticsearchClientspring-doc.cn

仍想使用旧客户端?

旧的已弃用的仍然可以使用,但您需要将依赖项显式添加到您的应用程序中,因为 Spring Data Elasticsearch 不再自动拉取它:RestHighLevelClientspring-doc.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.cn