此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Data Elasticsearch 5.5.2spring-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现在已弃用,ElasticsearchRestClient提供了更好的解决方案,可以通过设置tracerpackage 设置为“trace”。spring-doc.cadn.net.cn

org.springframework.data.elasticsearch.client.erhlc

请参阅包更改,此包中的所有类都已被弃用,因为要使用的默认客户端实现是基于 Elasticsearch 中新 Java 客户端的实现,请参阅 新建 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.dynamic@Field.dynamic相反。spring-doc.cadn.net.cn

重大变更

删除已弃用的调用

已删除作接口中的建议调用

SearchOperationsReactiveSearchOperations已弃用使用 Elasticsearch 类作为参数的调用。 这些现在已被删除,因此这些 API 中对 Elasticsearch 类的依赖关系已被清除。spring-doc.cadn.net.cn

包更改

所有使用或依赖于已弃用的 Elasticsearch 的类RestHighLevelClient已移至包中org.springframework.data.elasticsearch.client.erhlc. 通过此更改,我们现在可以清楚地区分使用旧的已弃用 Elasticsearch 库的代码、使用新 Elasticsearch 客户端的代码以及独立于客户端实现的代码。 此外,到目前为止提供的响应式实现已移至此处,因为此实现包含从 Elasticsearch 库复制和改编的代码。spring-doc.cadn.net.cn

如果您正在使用ElasticsearchRestTemplate直接而不是ElasticsearchOperations界面,您还需要调整导入。spring-doc.cadn.net.cn

使用NativeSearchQuery类,则需要切换到NativeQuery类,可以采用Query实例来自新的 Elasticsearch 客户端库。 您会在测试代码中找到大量示例。spring-doc.cadn.net.cn

转换为 Java 17 记录

以下类已转换为Record,您可能需要从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.HttpHeadersorg.springframework.data.elasticsearch.support.HttpHeaders.spring-doc.cadn.net.cn

提示:您可以传递一个org.springframework.http .HttpHeadersaddAll()方法org.springframework.data.elasticsearch.support.HttpHeaders.spring-doc.cadn.net.cn

新的 Elasticsearch 客户端

Spring Data Elasticsearch 现在使用新的ElasticsearchClient并已弃用以前的RestHighLevelClient.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();
	}
}

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

  • 一个RestClientbean,即配置的低级别RestClient由 Elasticsearch 客户端使用的spring-doc.cadn.net.cn

  • ElasticsearchClientbean,这是使用RestClientspring-doc.cadn.net.cn

  • ElasticsearchOperationsbean,与 bean 名称 elasticsearchOperationselasticsearchTemplate 一起使用,这使用ElasticsearchClientspring-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();
	}
}

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

  • 一个RestClientbean,即配置的低级别RestClient由 Elasticsearch 客户端使用的spring-doc.cadn.net.cn

  • ReactiveElasticsearchClientbean,这是使用RestClientspring-doc.cadn.net.cn

  • ReactiveElasticsearchOperationsbean,与 bean 名称 reactiveElasticsearchOperationsreactiveElasticsearchTemplate 一起使用,这使用ReactiveElasticsearchClientspring-doc.cadn.net.cn

还想使用旧客户端?

旧的已弃用RestHighLevelClient仍然可以使用,但您需要将依赖项显式添加到您的应用程序中,因为 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