原标题:Spring认证中国教育管理中心-Spring Data Couchbase教程九(Spring中国教育管理中心)
5.3.2.自动索引管理
默认情况下,预计用户会为其查询创建和管理最佳索引。尤其是在开发初期,自动创建索引可以快速上手。
对于 N1QL,提供了以下注释,这些注释需要附加到实体(在类或字段上):
- @QueryIndexed: 放置在一个字段上,表示该字段应该是索引的一部分
- @CompositeQueryIndex:放置在类上,表示应该在多个字段(复合)上创建索引。
- @CompositeQueryIndexes:如果CompositeQueryIndex应该创建多个,则此注释将采用它们的列表。
例如,这是您在实体上定义复合索引的方式:
示例 79. 两个字段的复合索引具有排序
@Document
@CompositeQueryIndex(fields = {"id", "name desc"})
public class Airline {
@Id
String id;
@QueryIndexed
String name;
@PersistenceConstructor
public Airline(String id, String name) {
this.id = id;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
}
默认情况下,索引创建被禁用。如果要启用它,则需要在配置中覆盖它:
示例 80.启用自动索引创建
@Override
protected boolean autoIndexCreation() {
return true;
}
5.3.3.查询一致性
默认情况下,使用 N1QL 的存储库查询使用NOT_BOUNDED扫描一致性。这意味着结果会快速返回,但来自索引的数据可能还不包含来自先前写入操作的数据(称为最终一致性)。如果您需要查询的“准备好自己的写入”语义,则需要使用@ScanConsistency注释。这是一个例子:
示例 81. 使用不同的扫描一致性
@Repository
public interface AirportRepository extends PagingAndSortingRepository<Airport, String> {
@Override
@ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
Iterable<Airport> findAll();
}
5.3.4.DTO 预测
Spring Data Repo