1

我通过手动运行在 couchbase 中创建了一个全球二级索引:

CREATE INDEX custom_index ON `my-bucket`(field_name) 
USING GSI 
WITH {"nodes": ["localhost:8091"]}

我有一个弹簧启动应用程序。有没有办法可以用 spring-data-couchbase 自动创建这个索引?期望的行为如下:在应用程序启动时,如果不存在要创建的索引。据我所知,唯一可以自动创建的二级索引是@N1qlSecondaryIndexed基于_class字段的索引。

4

1 回答 1

1

首先警告:这不是 couchbase 支持通常推荐的东西,主要是因为如果集群中的一个节点关闭并且它是保存索引的节点,您的应用程序将在另一个节点上重新创建重复索引,这可以有问题的。

@N1qlSecondaryIndexed就是选择加入的原因(您还必须更改配置才能激活它)。

没有自动和直接的方法来创建您的特定索引,但您可以访问底层 SDK,以便您可以从 Spring Boot中进行操作Application

注入对Bucket(我假设您将 Spring 配置为默认使用my_bucket)的引用,并在以下位置使用索引管理 API BucketManager

bucket.bucketManager().createN1qlIndex("custom_index", true, false, "field_name");

此方法的参数是索引名称,忽略“索引已存在错误”,不要推迟创建,然后是要索引的字段(如javadoc中所述)。

于 2016-09-23T12:04:19.877 回答