Spring Data Elasticsearch4.0.1中文翻译文档(附录)

附录

附录 A: 名称空间引用
这个 <repositories />元素

repository / 元素触发 Spring Data repository基础结构的设置。 最重要的属性是 base-package,它定义了扫描 Spring Data repository接口的包。 请参阅“XML 配置”。 下表描述了repository / 元素的属性:

Name 名称Description 描述
base-package在自动检测模式下定义要扫描的包,用于扩展 * Repository (实际接口由特定的 Spring Data 模块决定)的repository接口。 配置包下面的所有包也会被扫描。 允许使用通配符。
repository-impl-postfix定义用于自动检测自定义repository实现的后缀。 名称以后缀结尾的类被视为候选类。 默认为 Impl。
query-lookup-strategy确定用于创建查找器查询的策略。有关详细信息,请参阅“Query Lookup Strategies”。默认值为 create-if-found。
named-queries-location定义搜索包含外部定义查询的 Properties 文件的位置
consider-nested-repositories是否应该考虑嵌套repository接口定义。默认值为 false。
附录 B: Populators 名称空间引用
这个<populator />元素

Populator 元素允许通过 Spring Data repository基础结构填充数据存储区

Name 姓名Description 描述
locations从repository中查找要读取对象的文件的位置应填充。
附录 C: 库查询关键字
支持查询关键字

下表列出了 Spring Data repository查询派生机制通常支持的关键字。 但是,请查阅特定于存储的文档以获得所支持的关键字的确切列表,因为这里列出的一些关键字在特定存储中可能不受支持。

Table Query keywords 查询关键字
Logical keyword 逻辑关键字Keyword expressions 关键字表达式
ANDAnd
OROr
AFTERAfter, IsAfter
BEFOREBefore, IsBefore
CONTAININGContaining, IsContaining, Contains
BETWEENBetween, IsBetween
ENDING_WITHEndingWith, IsEndingWith, EndsWith
EXISTSExists
FALSEFalse, IsFalse
GREATER_THANGreaterThan, IsGreaterThan
GREATER_THAN_EQUALSGreaterThanEqual, IsGreaterThanEqual
INIn, IsIn
ISIs, Equals, (or no keyword)
IS_EMPTYIsEmpty, Empty
IS_NOT_EMPTYIsNotEmpty, NotEmpty
IS_NOT_NULLNotNull, IsNotNull
IS_NULLNull, IsNull
LESS_THANLessThan, IsLessThan
LESS_THAN_EQUALLessThanEqual, IsLessThanEqual
LIKELike, IsLike
NEARNear, IsNear
NOTNot, IsNot
NOT_INNotIn, IsNotIn
NOT_LIKENotLike, IsNotLike
REGEXRegex, MatchesRegex, Matches
STARTING_WITHStartingWith, IsStartingWith, StartsWith
TRUETrue, IsTrue
WITHINWithin, IsWithin
附录 D: repository查询返回类型
支持查询返回类型

下表列出了 Spring Data repository通常支持的返回类型。 但是,请查阅特定于存储的文档以获得支持的返回类型的确切列表,因为这里列出的某些类型在特定存储中可能不受支持

地理空间类型(例如GeoResult、GeoResults和GeoPage)仅对支持地理空间查询的数据存储可用。

Table Query return types 查询返回类型
Return type 返回类型Description 描述
void表示没有返回值。
PrimitivesJava primitives.
Wrapper types包装器类
T一个独特的实体。 期望查询方法最多返回一个结果。 如果没有找到结果,则返回 null。 多个结果触发 IncorrectResultSizeDataAccessException。
Iterator<T>An Iterator.
Collection<T>A Collection.
List<T>A List.
Optional<T>期望查询方法最多返回一个结果。 如果没有找到结果,则返回 Optional.empty ()或 optional.abroad ()。 多个结果触发 IncorrectResultSizeDataAccessException。
Option<T>无论是 Scala 还是 Vavr 选项类型,语义上与前面描述的 java8的 Optional 相同。
Stream<T>A Java 8 Stream.
Streamable<T>Iterable 的一个便利扩展,直接公开方法流,映射和过滤结果,连接它们等。
实现 Streamable 并接受 Streamable 构造函数或工厂方法参数的类型以 Streamable 作为参数公开构造函数或… of (…) / … valueOf (…) factory 方法的类型。 有关详细信息,请参阅返回自定义可流化包装器类型。
Vavr Seq, List, Map, SetVavr 集合类型。有关详细信息,请参阅对 Vavr 集合的支持
Future<T>需要用@async 注解一个方法,并且需要启用 Spring 的异步方法执行功能。
CompletableFuture<T>希望使用@async 注解方法,并要求启用 Spring 的异步方法执行功能。
ListenableFuture一个 org.springframework.util.concurrent。 Listenablefuture. 希望使用@async 注解方法,并要求启用 Spring 的异步方法执行功能。
Slice一个大小不等的数据块,指示是否有更多的数据可用。需要一个可分页的方法参数。
Page<T>一个包含附加信息的片,例如结果的总数。需要一个可分页的方法参数。
GeoResult<T>带有附加信息的结果条目,例如到引用位置的距离
GeoResults<T>带有附加信息的 GeoResult<T> 列表,例如到参考位置的平均距离。
GeoPage<T>GeoResult<T> 的页面,例如到参考位置的平均距离。
Mono<T>使用反应repository的 Project Reactor Mono 发射零个或一个元素。 期望查询方法最多返回一个结果。 如果没有找到结果,则返回 Mono.empty ()。 多个结果触发 IncorrectResultSizeDataAccessException。
Flux<T>一个项目反应堆通量排放零,一个,或许多元素使用反应堆。 返回 Flux 的查询还可以发出无限多的元素。
Single<T>使用 reactive repository发射单个元素。 期望查询方法最多返回一个结果。 如果没有找到结果,则返回 Mono.empty ()。 多个结果触发 IncorrectResultSizeDataAccessException。
Maybe<T>Rxjava 可能使用 reactive repository发出零或一个元素。 期望查询方法最多返回一个结果。 如果没有找到结果,则返回 Mono.empty ()。 多个结果触发 IncorrectResultSizeDataAccessException。
Flowable<T>使用 reactive repository发射零个、一个或多个元素的 RxJava Flowable。 返回 Flowable 的查询还可以发出无限多的元素。
附录 E: 迁移指南
从3.2. x 升级到4.0. x

本节描述从3.2. x 版本到4.0. x 版本的突变,以及如何用新引入的特性替换已删除的特性。

移除使用过的 Jackson 映射器

版本4.0.x 中的一个变化是 Spring Data Elasticsearch 不再使用 Jackson Mapper 将实体映射到 Elasticsearch 所需的 JSON 表示(参见 Elasticsearch Object Mapping)。 在版本3.2. x 中,Jackson Mapper 是默认使用的。 可以通过显式配置转换到基于元模型的转换器(称为 ElasticsearchEntityMapper)(元模型对象映射)。

在版本4.0.x 中,基于元模型的转换器是唯一可用的,不需要显式配置。 如果你有一个自定义的配置,通过提供一个像这样的 bean 来启用元模型转换器:

@Bean
@Override
public EntityMapper entityMapper() {

  ElasticsearchEntityMapper entityMapper = new ElasticsearchEntityMapper(
    elasticsearchMappingContext(), new DefaultConversionService()
  );
  entityMapper.setConversions(elasticsearchCustomConversions());

  return entityMapper;
}

您现在必须删除这个 bean,ElasticsearchEntityMapper 接口已被删除。

Entity configuraion 实体配置

一些用户在实体类上有自定义的 Jackson 注解,例如,为了在 Elasticsearch 为映射文档定义自定义名称或配置日期转换。 这些都不再被考虑在内了。 现在,Spring Data Elasticsearch 的@field 注解提供了所需的功能。 有关详细信息,请参阅 Mapping Annotation Overview 概述。

从查询对象中删除隐式索引名

在3.2.x 中,像 IndexQuery 或 SearchQuery 这样的不同查询类具有获取它们正在操作的索引名或索引名的属性。 如果没有设置,则检查传入的实体,以检索@document annotation.x 中设置的索引名。 通过将其分离,现在可以对不同的索引使用一个查询对象。

例如下面的代码:

IndexQuery indexQuery = new IndexQueryBuilder()
  .withId(person.getId().toString())
  .withObject(person)
  .build();

String documentId = elasticsearchOperations.index(indexQuery);

必须改为:

IndexCoordinates indexCoordinates = elasticsearchOperations.getIndexCoordinatesFor(person.getClass());

IndexQuery indexQuery = new IndexQueryBuilder()
  .withId(person.getId().toString())
  .withObject(person)
  .build();

String documentId = elasticsearchOperations.index(indexQuery, indexCoordinates);

为了方便处理实体并使用实体的@document 注解中包含的索引名,添加了类似 DocumentOperations.save (t 实体)的新方法;

新的操作接口

在3.2版本中,ElasticsearchOperations 接口定义了 ElasticsearchTemplate 类的所有方法。 在版本4中,这些函数被划分为不同的接口,并将这些接口与 Elasticsearch API 对齐:

  • DocumentOperations

    是与文档相关的功能,比如保存或删除

  • SearchOperations

    包含在 Elasticsearch搜索的功能

  • IndexOperations

    定义操作索引的函数,如索引创建或映射创建。

现在 ElasticsearchOperations 扩展了 DocumentOperations 和 SearchOperations,并且拥有访问 IndexOperations 实例的方法。

版本3.2中ElasticsearchOperations接口的所有函数现在都移到了IndexOperations接口,但它们仍然可用,它们被标记为已弃用,并有委托给新实现的默认实现

/**
 * Create an index for given indexName.
 *
 * @param indexName the name of the index
 * @return {@literal true} if the index was created
 * @deprecated since 4.0, use {@link IndexOperations#create()}
 */
@Deprecated
default boolean createIndex(String indexName) {
	return indexOps(IndexCoordinates.of(indexName)).create();
}
Deprecations 弃用
方法和类

许多函数和类已被弃用。 这些功能仍然有效,但 Javadocs 展示了它们应该被替换的地方。

来自 ElasticsearchOperations 的示例
/*
 * Retrieves an object from an index.
 *
 * @param query the query defining the id of the object to get
 * @param clazz the type of the object to be returned
 * @return the found object
 * @deprecated since 4.0, use {@link #get(String, Class, IndexCoordinates)}
 */
@Deprecated
@Nullable
<T> T queryForObject(GetQuery query, Class<T> clazz);
Elasticsearch deprecations

由于 Elasticsearch 传输客户端的版本7已经过时了,它将会在 Elasticsearch 版本8中被删除。 Spring Data Elasticsearch 不赞成在版本4.0中使用 TransportClient 的 ElasticsearchTemplate 类。

映射类型从 Elasticsearch 7中删除,它们仍然作为已弃用的值存在于 Spring Data@Document 注解和 IndexCoordinates 类中,但是它们在内部不再使用。

Removals 搬迁
  • 如前所述,ElasticsearchEntityMapper 接口已被删除。
  • Searchquery 接口已经合并到它的基本接口 Query 中,因此它的出现可以用 Query 替换。
  • 方法org.springframework.data.elasticsearch.core.ElasticsearchOperations.query(SearchQuery query,ResultsExtractor resultsExtractor); 并且org.springframework.data.elasticsearch.core.ResultsExtractor接口已被删除。 在用基于Jackson的映射器完成的响应映射还不够的情况下,这些可以用于解析Elasticsearch的结果。 从4.0版开始,有新的Search Result Types从Elasticsearch响应中返回信息,因此无需公开此低级功能。
  • 低级方法startScroll,continueScroll和clearScroll已从ElasticsearchOperations接口中移除。 为了进行低级滚动API访问,ElasticsearchRestTemplate类上现在有searchScrollStart,searchScrollContinue和searchScrollClear方法。 :leveloffset:-1:leveloffset:-1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值