Indexing 我可以从应用程序代码中使用spring数据库创建自定义N1QL二级索引吗?

Indexing 我可以从应用程序代码中使用spring数据库创建自定义N1QL二级索引吗?,indexing,spring-boot,couchdb,n1ql,spring-data-couchbase,Indexing,Spring Boot,Couchdb,N1ql,Spring Data Couchbase,我在couchbase中手动创建了一个全局二级索引: CREATE INDEX custom_index ON `my-bucket`(field_name) USING GSI WITH {"nodes": ["localhost:8091"]} 我有一个spring启动应用程序。有没有一种方法可以使用SpringDataCouchbase自动创建此索引?所需的行为如下:在应用程序启动时,如果不存在要创建的索引。据我所知,唯一可以自动创建的二级索引是@N1qlSecondaryIndex

我在couchbase中手动创建了一个全局二级索引:

CREATE INDEX custom_index ON `my-bucket`(field_name) 
USING GSI 
WITH {"nodes": ["localhost:8091"]}
我有一个spring启动应用程序。有没有一种方法可以使用SpringDataCouchbase自动创建此索引?所需的行为如下:在应用程序启动时,如果不存在要创建的索引。据我所知,唯一可以自动创建的二级索引是
@N1qlSecondaryIndexed
,该索引基于
\u class
字段。

首先警告: couchbase支持部门通常不建议这样做,主要是因为如果集群中的一个节点出现故障,而该节点持有索引,则您的应用程序将在另一个节点上重新创建重复索引,这可能会有问题

这就是为什么
@N1qlSecondaryIndexed
是opt-in(您还必须更改配置才能激活它)

没有自动和直接的方法来创建特定的索引,但是您可以访问底层SDK,这样您就可以在Spring Boot
应用程序中进行创建

插入对
Bucket
的引用(我假设您正在配置Spring以默认使用my_Bucket),并使用
BucketManager上的索引管理API

bucket.bucketManager().createN1qlIndex("custom_index", true, false, "field_name");
此方法的参数是索引名称,忽略“索引已存在错误”,不要延迟创建,然后是要索引的字段(如中所述)