Upgrading from 4.2.x to 4.3.x

  • 替换 RestHighLevelClient 以满足许可证要求。

  • 移除了或替换了 org.elasticsearch 包中的类,仅在实现层使用。

  • 弃用了建议方法,取而代之的是使用本地搜索查询和 Mono 返回值。

  • 更改了某些枚举、属性类型、方法返回类型、错误处理和其他类名。

  • 修复了字段和源筛选器属性的处理问题,并更改了 search_type 的默认值。

  • 更改了 BulkOptions 和 IndicesOptions 属性的类型,并移动了完成类。

本节介绍 4.2.x 到 4.3.x 版本的重大变动,以及如何使用新引入的功能替换移除的功能。

Elasticsearch 正在使用新的客户端来替换 RestHighLevelClient,因为 RestHighLevelClient 使用 Elasticsearch 核心库中的代码,而这些代码不再使用 Apache 2 许可。Spring Data Elasticsearch 也在为此更改做准备。这意味着 *Operations 接口的内部实现需要更改——如果用户按照 ElasticsearchOperationsReactiveElasticsearchOperations 等接口进行编程,这应该不成问题。如果您直接使用 ElasticsearchRestTemplate 等实现类,则需要适应这些更改。 Spring Data Elasticsearch 还移除了或替换了在其 API 类和方法中的 org.elasticsearch 包中类的使用,仅在实现 Elasticsearch 访问的实现中使用它们。对用户来说,这意味着一些使用的枚举类已被 org.springframework.data.elasticsearch 中具有相同值的新枚举类替换,这些类在内部映射到 Elasticsearch 枚举类中。 在无法轻松替换使用类的场合,会被标记为不推荐使用,我们正在致力于替换。 查看 一节了解更多详细信息。

Deprecations

suggest methods

SearchOperations 中,以及 ElasticsearchOperations 中,将 org.elasticsearch.search.suggest.SuggestBuilder 作为参数并返回 org.elasticsearch.action.search.SearchResponsesuggest 方法已被弃用。请改用 SearchHits<T> search(Query query, Class<T> clazz),传入一个 NativeSearchQuery,它可以包含一个 SuggestBuilder 并从返回的 SearchHit<T> 中读取建议结果。

ReactiveSearchOperations 中,新的 suggest 方法现在返回一个 Mono<org.springframework.data.elasticsearch.core.suggest.response.Suggest>。这里旧方法也被弃用。

Breaking Changes

Removal of org.elasticsearch classes from the API.

  • org.springframework.data.elasticsearch.annotations.CompletionContext 注解中,属性 type() 已从 org.elasticsearch.search.suggest.completion.context.ContextMapping.Type 更改为 org.springframework.data.elasticsearch.annotations.CompletionContext.ContextMappingType,可用的枚举值是相同的。

  • org.springframework.data.elasticsearch.annotations.Document 注解中,versionType() 属性已更改为 org.springframework.data.elasticsearch.annotations.Document.VersionType,可用的枚举值是相同的。

  • org.springframework.data.elasticsearch.core.query.Query 接口中,searchType() 属性已更改为 org.springframework.data.elasticsearch.core.query.Query.SearchType,可用的枚举值是相同的。

  • org.springframework.data.elasticsearch.core.query.Query 接口中,timeout() 的返回值已更改为 java.time.Duration

  • SearchHits&lt;T&gt;`class does not contain the `org.elasticsearch.search.aggregations.Aggregations 了。改为包含 org.springframework.data.elasticsearch.core.AggregationsContainer&lt;T&gt; 类的实例,其中 T 是底层客户端中使用的具体聚合类型。目前将是 org .springframework.data.elasticsearch.core.clients.elasticsearch7.ElasticsearchAggregations 对象;稍后将提供不同的实现。ReactiveSearchOperations.aggregate() 函数也进行了同样的更改,现在返回 Flux&lt;AggregationContainer&lt;?&gt;&gt;。使用聚合的程序需要更改为将返回值强制转换为适当的类才能进一步处理。

  • 可能抛出 org.elasticsearch.ElasticsearchStatusException 的方法现在将抛出 org.springframework.data.elasticsearch.RestStatusException

Handling of field and sourceFilter properties of Query

在 4.2 版中,Queryfields 属性已被解释并添加到 sourceFilter 的包含列表中。这是不正确的,因为对于 Elasticsearch 来说,这两个是不同的东西。此问题现已更正。因此,依赖使用 fields 来指定应从文档的 _source' and should be changed to use the `sourceFilter 中返回哪些字段的代码可能不再运行。

search_type default value

Elasticsearch 中 search_type 的默认值是 query_then_fetch。这也已作为 Query 实现的默认值进行设置,此前设置为 dfs_query_then_fetch

BulkOptions changes

org.springframework.data.elasticsearch.core.query.BulkOptions 类的某些属性已更改其类型:

  • timeout 属性的类型已更改为 java.time.Duration

  • refreshPolicy 属性的类型已更改为 org.springframework.data.elasticsearch.core.RefreshPolicy

IndicesOptions change

Spring Data Elasticsearch 现在使用 org.springframework.data.elasticsearch.core.query.IndicesOptions 而不是 org.elasticsearch.action.support.IndicesOptions

Completion classes

org.springframework.data.elasticsearch.core.completion 中的类已移至 org.springframework.data.elasticsearch.core.suggest

Other renamings

org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentPropertyConverter 接口已重命名为 org.springframework.data.elasticsearch.core.mapping.PropertyValueConverter。同样,名为 XXPersistentPropertyConverter 的实现类已重命名为 XXPropertyValueConverter