每次重新运行应用程序时,CouchBase都会尝试创建索引

时间:2020-09-29 07:38:06

标签: spring couchbase spring-data-couchbase

我将Java SDK 3.0.3用作CouchBase客户端。使用以下@Configuration

处理索引配置
@Bean
public void createIndexes() {
QueryIndexManager indexManager = couchbaseCluster.queryIndexes();

    indexManager.createPrimaryIndex(couchbaseProperties.getBucketName(), 
            CreatePrimaryQueryIndexOptions.createPrimaryQueryIndexOptions());
    indexManager.createIndex(couchbaseProperties.getBucketName(), 
            "user_idx", Collections.singletonList("userId"), 
            CreateQueryIndexOptions.createQueryIndexOptions());

}

每次我重新运行该应用程序时,您可能会注意到它尝试再次创建现有索引并引发 IndexAlreadyExist 异常。

简而言之,我使用if statement检查是否创建了索引,但这似乎不是最佳实践。

一堆文档都在强调IF NOT EXISTS关键字,但是我找不到正确的语法,或者CouchBase不支持此功能。

通过避免所描述的问题来创建索引的最佳方法是什么? 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

QueryIndexOptionsPrimaryQueryIndexOptions都具有一个ignoreIfExists属性,您可以启用该属性来获取所需的行为。

CreateQueryIndexOptions.createQueryIndexOptions()
  .ignoreIfExists(true)