Java 春季及;Couchbase-如何通过代码创建索引
我的Spring Boot应用程序使用Couchbase 5.1社区 我的应用程序需要一个主索引和几个辅助索引 目前,为了创建所需的索引,我访问UI和Java 春季及;Couchbase-如何通过代码创建索引,java,spring-boot,spring-data,couchbase,n1ql,Java,Spring Boot,Spring Data,Couchbase,N1ql,我的Spring Boot应用程序使用Couchbase 5.1社区 我的应用程序需要一个主索引和几个辅助索引 目前,为了创建所需的索引,我访问UI和query页面并手动创建应用程序需要的索引 我一直在寻找一种通过代码自动完成的方法,因此当应用程序启动时,它将检查索引是否丢失,并在需要时创建索引 有没有办法通过Spring数据或Couchbase客户端来实现这一点?您可以使用index类中的DSL来创建它们。在“”下的文档中有一个使用它的示例 从这个例子来看: 您还可以在JSON的特定字段上创建
query
页面并手动创建应用程序需要的索引
我一直在寻找一种通过代码自动完成的方法,因此当应用程序启动时,它将检查索引是否丢失,并在需要时创建索引
有没有办法通过Spring数据或Couchbase客户端来实现这一点?您可以使用index类中的DSL来创建它们。在“”下的文档中有一个使用它的示例 从这个例子来看: 您还可以在JSON的特定字段上创建二级索引, 为了获得更好的性能:
Index.createIndex(“Index\u name”).on(bucket.name(),“field\u to\u Index”)
在本例中,为索引指定一个名称,指定目标bucket和
要索引的JSON中的字段
如果索引已经存在,则会出现一个
索引ReadyExistsException
(),因此您需要检查该异常。因此我就是这样解决它的:
import com.couchbase.client.java.Bucket;
public class MyCouchBaseRepository{
private Bucket bucket;
public MyCouchBaseRepository(<My Repository that extends CouchbasePagingAndSortingRepository> myRepository){
bucket = myRepository.getCouchbaseOperations().getCouchbaseBucket();
createIndices();
}
private void createIndices(){
bucket.bucketManager().createN1qlPrimaryIndex(true, false)
bucket.query(N1qlQuery.simple("CREATE INDEX xyz ON `myBucket`(userId) WHERE _class = 'com.example.User'"))
...
}
}
import com.couchbase.client.java.Bucket;
公共类数据库存储库{
私人水桶;
公共MyCuchBaseRepository(myRepository){
bucket=myRepository.getCouchbaseOperations().getCouchbaseBucket();
createindex();
}
私有void createindex(){
bucket.bucketManager().createN1qlPrimaryIndex(真、假)
query(N1qlQuery.simple(“在`myBucket`(userId)上创建索引xyz,其中`u class='com.example.User'))
...
}
}
这在N1QL查询中应该是可能的-